设计模式——状态模式
一、概念:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
二、UML示意图:

定义一个抽象State类,不同的具体状态类继承自State类,并在Handle中提供这个状态应该做的行为的实现和切换至另一个状态。上下文Context持有一个具体状态类,并执行Handle方法,做这个状态下应该做的事。
三、优缺点
优点:
- 去掉了本该有的一连串的状态判断(if-else)
- 针对抽象State类编程使得扩展性变得更好,新增具体状态类或更改已有具体状态类不会影响其他具体状态类
- 因为状态类中只有这个状态中该做的行为,而没有自己的内部属性,所以状态对象是可以共享的
- 封装了状态转换的规则
缺点:
- 具体状态类会增加类的数量。
- 状态模式的结构与实现都较为复杂,如果使用不当将导致程序结构和代码的混乱。
- 增加新的状态,需要在旧的状态中增加转换到这个状态的逻辑代码,违背了开闭原则。

浙公网安备 33010602011771号