目的 状态模式中,把判断逻辑放入状态对象中,当状态对象的内部发生改变时,可以根据条件相应地改变其行为。而在外界看来,更像是对象发生了改变
应用场景

(1)必须在对象运行时改变对象的行为

(2)传统编程需要考虑所有可能发生的情况,使用条件选择语句if-else判断并选择执行。当新增状态时,需要新增if-else语句,程序扩展繁琐。针对条件表达式过于复杂,可以采用状态模式,分离判断逻辑变为一系列的状态类,这样,判断逻辑就变得更加简单

构成 环境、抽象状态、具体状态
备注 状态模式应用场景:不同的情绪下,人的不同表现;操作系统多线程条件下,线程的状态转换

 

 

 

 

 

 

状态模式由环境、抽象状态、具体状态等角色组成。

(1)环境:含状态的对象,可以处理请求,而请求产生的具体响应与状态有关。比如:人的状态中,人可以看做环境。

(2)抽象状态:状态接口中,状态接口,定义了每一个状态的行为集合,该行为供环境对象使用。

(3)具体状态:每个子类实现抽象状态相关的行为。比如人的状态中,具体的状态类,则可以是休息、上班和打盹