当前位置: 首页 > news >正文

代理模式:控制对象访问

为其他对象提供一种代理以控制对这个对象的访问(如延迟加载、权限校验)。

代码示例:

// 1. 抽象接口
interface Image {void display();
}// 2. 真实对象(高开销)
class RealImage implements Image {private final String filename;public RealImage(String filename) {this.filename = filename;loadFromDisk(); // 模拟高成本操作}private void loadFromDisk() {System.out.println("正在加载图像: " + filename);}@Overridepublic void display() {System.out.println("显示图像: " + filename);}
}// 3. 代理类(控制访问)
class ProxyImage implements Image {private RealImage realImage;private final String filename;public ProxyImage(String filename) {this.filename = filename;}@Overridepublic void display() {if (realImage == null) {realImage = new RealImage(filename); // 延迟加载}realImage.display();}
}// 客户端调用
public class Client {public static void main(String[] args) {Image image = new ProxyImage("photo.jpg");image.display();}
}

 

使用场景:虚拟代理(延迟加载大文件)、保护代理(权限控制)、远程代理(网络请求封装)

优点:解耦客户与真实对象;增强安全性/性能

缺点:可能增加响应延迟;代码复杂度提高 

http://www.lryc.cn/news/587250.html

相关文章:

  • AutoLabor-ROS-Python 学习记录——第二章 ROS通信机制
  • CATIA许可价格高,设计部门如何精细化分配?
  • Python 数据挖掘之数据探索
  • 鸿蒙选择本地视频文件,并获取首帧预览图
  • 【算法】贪心算法:柠檬水找零C++
  • 密码学系列文(1)--密码学基础概念详解
  • 密码学系列文(2)--流密码
  • ansible自动化部署考试系统前后端分离项目
  • 在 C# 中调用 Python 脚本:实现跨语言功能集成
  • MySQL逻辑删除与唯一索引冲突解决
  • C++高频知识点(九)
  • 39.Sentinel微服务流量控制组件
  • 【一起来学AI大模型】部署优化推理加速:vLLM
  • word中多行合一功能实现
  • comfyUI-ControlNet-姿势控制深度控制
  • Java 8 LocalDate 日期操作全攻略
  • CS课程项目设计1:交互友好的井字棋游戏
  • 【多线程】 线程池设多大才合理?CPU 密集型和 I/O 密集型的终极公式
  • 深度学习图像分类数据集—七种树叶识别分类
  • AI生成单词消消乐游戏. HTML代码
  • LeetCode 2401.最长优雅子数组
  • Ampace厦门新能安科技Verify 测评演绎数字推理及四色测评考点分析、SHL真题题库
  • 【sql学习之拉链表】
  • 系规备考论文:论IT服务知识管理
  • MyBatis框架进阶指南:深入理解CRUD与参数映射
  • CVE-2022-0609
  • Oracle SQL - 使用行转列PIVOT减少表重复扫描(实例)
  • 常用的docker命令备份
  • Docker从环境配置到应用上云的极简路径
  • 《Google 软件工程》:如何写好文档?