动机:在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等),直接访问会给使用者或者系统结构带来很多麻烦。如何在不失去透明操作对象的同时来管理/控制这些对象特有的复杂性?增加一层间接层是软件开发中常见的解决方式。

应用:远程对象访问、Copy-On-Write

场景:为了使操作ThinkPad对应用程序透明,隔离硬件操作的复杂性,在应用程序和ThinkPad中间置入一代理层(相当于操作系统),此代理通过向应用程序提供一致的API,实现对硬件的操作。


结构
设计模式学习笔记十二——Proxy模式

代码实现

设计模式学习笔记十二——Proxy模式namespace DesignPattern.Proxy
}

设计模式学习笔记十二——Proxy模式namespace DesignPattern.Proxy
}


要点
1、在面向对象系统中,直接使用某些对象会带来带很多问题,作为间接层的代理对象是解决这一问题的常用手段。
2、该模式在具体使用的时候,实现方法、粒度都相差很大。有些可能对单个对象做细粒度的控制,如Copy-On-Write技术,有些可能对组件模块提供抽象代理层,在架构层次对对象做代理。
3、该模式并不要求保持接口一致,只要能够实现间接控制,有时损失一些透明性是可以接受的。

相关文章: