名称:代理

代理设计模式构建了透明置于两个不同对象之内的一个对象,从而能够截取或代理这两个对象间的通信或访问。

问题于解决方案:

代理设计模式构造了一个对象,该对象可以截取其他两个或更多对象之间的通信。Proxy对象的外部接口与其所属的类完全相同。调用对象无法辨别原始对象和Proxy对象之间的差异。代理设计模式的核心存在于下列3个目标中:提供访问、只按需引起开销,以及持续数据存储。

代理设计模式的一个应用示例是对发布信息的访问限制。某个社交网络站点允许用户创建简介页面。用户可以是该页面保持保密状态或公开状态。这个系统经过完全测试,并且运转情况良好。所有人都不想对待吗进行任何改动。不久以后,公司内部传达了一个新的规定:不允许公司任何雇员创建和公开发布简介。变成人员的任务是创建一个阻止雇员公开发布公司简介的系统。他们决定创建发布简介请求的Proxy对象。如果具体用户是公司的雇员,那么请求就会被中断。否则,回转发请求。发布对象完全不知道信息已经过代理的过滤。

在需要过滤或增强两个对象之间的通信时,我们可以通过基于代理设计模式的对象来完成这个要求。

UML:

Proxy

代码示例: