Proxy Pattern (代理模式)¶
代理模式 (Proxy Pattern) is a structural design pattern that provides a surrogate or placeholder to control access to another object^[600-developer__23种设计模式.md]. This pattern involves creating a "Proxy" class that acts as an interface to the real object, typically to manage the lifecycle or access rights of the underlying resource^[600-developer__23种设计模式.md]。
代理对象的类型¶
根据用途的不同,代理模式通常分为以下几种类型^[600-developer__23种设计模式.md]:
- 远程代理:为一个位于不同地址空间的对象提供本地代表。这通常用于分布式系统中,使得客户端可以像访问本地对象一样访问远程对象。
- 虚拟代理:根据需要创建开销很大的对象。它通常用于延迟初始化,当真正需要对象时才创建或加载它。
- 保护代理:控制对原始对象的访问。它用于不同权限的对象访问控制,比如在对象访问前进行权限检查。
- 智能引用:取代裸指针,用于在对象被访问时执行额外的操作,例如计算引用次数或加载持久化对象。
代理模式与装饰器模式的区别¶
在面向对象设计中,代理模式经常与 [[decorator-pattern|Decorator Pattern (装饰器模式)]] 进行比较[600-developer__23种设计模式.md]。两者都使用了“聚合”和“委托”的机制来包装一个对象[600-developer__23种设计模式.md]。
-
意图不同:
- 代理模式:主要侧重于控制对对象的访问,目的是在不直接操作对象的情况下管理其生命周期或权限^[600-developer__23种设计模式.md]。
- 装饰器模式:主要侧重于为对象动态地添加职责或行为,目的是增强对象的功能^[600-developer__23种设计模式.md]。
-
定义与结构:虽然结构相似,但装饰器模式通常指代一种特殊的代理机制,它不关注对象的生命周期管理(如延迟加载),而是关注对对象功能的组合与扩展^[600-developer__23种设计模式.md]。