《设计模式Design Pattern》读书笔记之十八

《设计模式Design Pattern》读书笔记之十八

State模式

结构

 

目的

当一个对象(context)根据当前本身的状态(state),会产生不同的行为的时候,可以采用state模式。把所有跟改状态相关的行为/动作转移到一个外部的state对象中。这样,可以避免context内部大量的switch.if等判断。

 

优缺点

带来更大的灵活性和可维护性,因为一个新的状态可以很容易地通过派生一个类来追加。当然,带来的缺点是会增加类的数目,降低紧凑性。

 

讨论

1,  如果state没有内部的状态,可以被共享。这时候,就是一个没有intrinsic stateFlyweight.

2,  State的迁移(transition)如果是fixed的,可以在context内部进行。如果更灵活一些,state的迁移由各个state来进行,这时候,context需要提供一个接口让state对象设定contextstate;优点是可以通过派生新类来容易地修改或者扩展state迁移逻辑,缺点是一个state起码需要知道一个另外的state,增加了state之间的耦合度。

3,  State对象可以在需要的时候才创建,用完了之后就删除;也可以预先生成所有的state,永远不删除。取决于state迁移的频度等,进行合理的选择。

4,  State对象一般是Singletons

 

 

 

参考资料

Design Pattern  Gang-Of-4  1997

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值