《HeadFirst设计模式》书摘-状态模式/代理模式
2017-06-23 16:20
351 查看
状态模式
定义
允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类
get到的oo原则
类应该只有一个改变的理由
要点
状态模式允许一个对象基于内部状态而拥有不同的行为和程序状态机(PSM)不同,状态模式用类代表状态
context会将行为委托给当前状态对象
通过将每个状态封装进一个类,我们把以后需要做的任何改变局部化了
状态模式和策略模式有相同的类图,但是他们意图不同
策略模式通常会用行为或算法来配置context类
状态模式允许随着状态的改变而改变行为
状态转换可以由state类或context类控制
使用状态模式通常会导致设计中类的数目大量增加
状态类可以被多个context实例共享
代理模式
定义
为另一个对象提供一个替身或占位符以访问这个对象
要点
代理模式为另一个对象提供代表,以便控制客户对对象的访问,管理访问的方式有许多种远程代理管理客户和远程对象之间的交互
虚拟代理控制访问实例化开销大的对象
保护代理基于调用者控制对象方法的访问
代理模式有许多变体,例如:缓存代理,同步代理,防火墙代理和写入时复制代理
代理在结构上类似装饰者,但是目的不同
装饰者模式为对象加上行为,而代理则是控制访问
java内置的代理支持,可以根据需要建立动态代理,并将所要调用分配到所选的处理器
就和其他包装者一样,代理会造成你的设计中的类数目增加
相关文章推荐
- 谈谈下订单的几种实现方式(用不同的模式实现:装饰器模式、代理模式、命令模式、状态模式、模版模式)
- 状态模式--策略模式--代理模式
- 懒羊学习《深入浅出设计模式》C#代码手札之状态模式与代理模式
- 《HeadFirst设计模式》书摘-模板方法/模式迭代器/组合
- 状态模式 State -- 学习HeadFirst设计模式记录
- 谈谈下订单的几种实现方式(用不同的模式实现:装饰器模式、代理模式、命令模式、状态模式、模版模式)
- HeadFirst设计模式之状态模式
- 设计模式:性能与对象访问(享元,代理) :对象状态(备忘录)
- 订单的几种实现方式(用不同的模式实现:装饰器模式、代理模式、命令模式、状态模式、模版模式)
- iOS:使用代理模式监听开关状态改变事件
- 深入浅出设计模式之状态模式、代理模式
- 设计模式笔记(九)--状态模式、代理模式
- HeadFirst设计模式_读书笔记_010_状态模式
- Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---状态模式
- 代理模式Proxy-- 学习HeadFirst设计模式记录
- 《HeadFirst设计模式》书摘-策略模式/观察者模式
- 《HeadFirst设计模式》书摘-装饰者模式/抽象工厂模式/工厂方法模式
- 命令模式-适配器模式-外观模式-模板方法模式-迭代器模式-组合模式-状态模式-代理模式
- 状态模式的高效运用-1
- 在Forms验证模式下,实现多个站点(SubDomain相同)共享同一用户登录状态