Head First设计模式读书笔记-第十一章 Proxy Pattern 代理模式
代理模式
代理:控制管理和访问
远程代理
制作远程服务的步骤:
- 制作远程接口
- 制作远程实现
- 利用rmic产生stub和skeleton
- 启动RMI registry
- 开始远程服务
原语类型(primitive)或者可序列化类型(Serializable):原语类型即基本类型,可序列化类型即实现Serializable接口的类型
transient:让JVM在反序列化字段的时候,忽略当前项
定义
代理模式:为另一个对象提供一个替身或占位符以控制对这个对象的访问。
使用代理模式创建代表(representative)对象,让代表对象控制某对象的访问,被代理的对象可以是远程的对象,创建开销大的对象或需要安全控制的对象。
远程代理控制访问远程对象
虚拟代理控制访问创建开销大的资源
保护代理基于权限控制对资源的访问
装饰者:包装另一个对象,并提供额外的行为
外观:包装许多对象以简化它们的接口
代理:包装另一个对象,并控制对它的访问
适配器:包装另一个对象,并提供不同的接口
示例
通过Proxy的静态方法获取代理对象handler,通过handler控制接口的访问
第十一章总结
防火墙代理(Firewall Proxy):控制网络资源的访问,保护主题免于“坏客户“的侵害
智能引用代理(Smart Reference Proxy):当主题被引用时,进行额外的动作,如计算一个对象被引用的次数
缓存代理(Caching Proxy):为开销大的运算结果提供暂时存储:允许多个客户共享结果,以减少计算或网络延迟。
同步代理(Synchronization Proxy)在多线程的情况下为主题提供安全的访问
复杂隐藏代理(Complexity Hiding Proxy):用来隐藏一个类的复杂集合的复杂度,并进行访问控制。也称为外观代理(Façade Proxy)
写入时复制代理(Copy-On-Write Proxy):用来控制对象的复制,方法是延迟对象的复制,直到客户真的需要为止
远程代理管理客户和远程对象之间的交互
虚拟代理控制访问实例化开销大的对象
保护代理基于调用者控制对象方法的访问
装饰者模式为对象加上行为,而代理则是控制访问
代理会造成设计中类的数目增加
OO基础
抽象、封装、多态、继承
OO原则
封装变化
多用组合、少用继承
针对接口编程、不针对实现编程
为交互对象之间的松耦合设计努力
对扩展开放,对修改关闭
依赖抽象,不依赖具体
只和亲密朋友谈话----最少知道原则
别找我,我会找你----好莱坞原则
类应该只有一个改变的理由----单一职责原则
OO模式
代理模式---为另一个对象提供一个替身或占位符以访问这个对象