设计模式——状态模式

一、概念:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

二、UML示意图:

 

 定义一个抽象State类,不同的具体状态类继承自State类,并在Handle中提供这个状态应该做的行为的实现和切换至另一个状态。上下文Context持有一个具体状态类,并执行Handle方法,做这个状态下应该做的事。

三、优缺点

优点:

  • 去掉了本该有的一连串的状态判断(if-else)
  • 针对抽象State类编程使得扩展性变得更好,新增具体状态类或更改已有具体状态类不会影响其他具体状态类
  • 因为状态类中只有这个状态中该做的行为,而没有自己的内部属性,所以状态对象是可以共享的
  • 封装了状态转换的规则

缺点:

  • 具体状态类会增加类的数量。
  • 状态模式的结构与实现都较为复杂,如果使用不当将导致程序结构和代码的混乱。
  • 增加新的状态,需要在旧的状态中增加转换到这个状态的逻辑代码,违背了开闭原则。
posted @ 2020-03-17 22:50  夜里寻星  阅读(95)  评论(0)    收藏  举报