无废话C#设计模式之十六:State
2009-04-02 08:23:13 来源:WEB开发网核心提示: l 从应用角度来说,如果一个对象有多种状态,无废话C#设计模式之十六:State(3),如果希望把对象状态的转化以及由不同状态产生的行为交给具体的状态类去做,那么可以考虑状态模式,注意事项l 过多的状态对象可能会增加系统负担,可以考虑把各种状态角色实现为无状态对象的享元,实现要点l 在环境
l 从应用角度来说,如果一个对象有多种状态,如果希望把对象状态的转化以及由不同状态产生的行为交给具体的状态类去做,那么可以考虑状态模式。
实现要点
l 在环境角色中拥有状态角色的实例。
l 在状态角色中拥有环境角色的实例用于在具体状态中修改环境角色的状态。
l 状态对象之间的依赖可以通过加载外部配置的转化规则表等方法来消除。
l 状态模式和策略模式的主要区别是,前者的行为实现方式是由条件决定的,并且应当能不在客户端干预的情况下自己迁移到合适的状态,而后者的行为实现方式是由客户端选择的,并且能随时替换。
注意事项
l 过多的状态对象可能会增加系统负担,可以考虑把各种状态角色实现为无状态对象的享元,需要保存的额外状态由环境角色进行统一管理和处理。
系列文章:
无废话C#设计模式之一:开篇
无废话C#设计模式之二:Singleton
无废话C#设计模式之三:Abstract Factory
无废话C#设计模式之四:Factory Method
无废话C#设计模式之五:Prototype
更多精彩
赞助商链接