大话设计模式读书笔记-7代理模式

第7章 为别人做嫁衣——代理模式

定义

代理模式,为其他对象提供一种代理以控制对这个对象的访问。

解释

代理对象和真实对象具有相同名字的接口(两者可以继承一个共同的抽象类),不同点在于:真实对象的接口做真正的事情,而代理对象的接口调用真正对象的接口,只负责获取/传送代理结果(代理对象保存有真实对象的引用控制其具体访问,客户端只调用代理对象间接访问真实对象)。

主要用于:远程访问(不同地址的远程对象,通过代理调用,隐藏了不同地址空间的问题),虚拟代理(比如网页加载图像等大量数据之前,先显示代理的框架以提高响应度),安全控制,智能指针等。

实现

  • Subject: 定义了真正类和代理类的共同接口(request())。以便任何时候能通过代理的接口实现调用到同样类的接口实现。
  • RealSubject: 定义了真正类,实现相应的接口(request()),真正做事情的类。
  • Proxy: 定义了代理类,代理类保存一个RealSubject的对象引用,其接口request()通过引用调用到实际类的request(),实现代理替换实际类的效果。
  • Client: 创建代理类,通过代理类发送请求(不用关注实际类是什么)

实现类图:

img
img

客户端代码

代理模式客户端

总结

代理模式通过代理对象间接访问真实对象,也可在代理中控制真实对象的访问。这使得在访问对象时引入了一种间接性,通过间接性附加多种用途。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容