第7章 为别人做嫁衣——***模式
定义
***模式,为其他对象提供一种***以控制对这个对象的访问。
解释
***对象和真实对象具有相同名字的接口(两者可以继承一个共同的抽象类),不同点在于:真实对象的接口做真正的事情,而***对象的接口调用真正对象的接口,只负责获取/传送***结果(***对象保存有真实对象的引用控制其具体访问,客户端只调用***对象间接访问真实对象)。
主要用于:远程访问(不同地址的远程对象,通过***调用,隐藏了不同地址空间的问题),虚拟***(比如网页加载图像等大量数据之前,先显示***的框架以提高响应度),安全控制,智能指针等。
实现
- Subject: 定义了真正类和***类的共同接口(request())。以便任何时候能通过***的接口实现调用到同样类的接口实现。
- RealSubject: 定义了真正类,实现相应的接口(request()),真正做事情的类。
- Proxy: 定义了***类,***类保存一个RealSubject的对象引用,其接口request()通过引用调用到实际类的request(),实现***替换实际类的效果。
- Client: 创建***类,通过***类发送请求(不用关注实际类是什么)
实现类图:
img
img
客户端代码
***模式客户端
总结
***模式通过***对象间接访问真实对象,也可在***中控制真实对象的访问。这使得在访问对象时引入了一种间接性,通过间接性附加多种用途。