1、状态模式:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。
2、解决的问题:当控制一个对象状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的逻辑简化。将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。
3、优点:(1)、将特定的状态相关的行为都放入一个对象中,由于所有与状态相关的代码都放在状态类对象中,所以通过定义行的子类可以很容易得增加新的状态和转换。(2)、消除了庞大的添加分支语句,大的风之判断会使得他们难以修改和扩展。状态模式通过各种状态转移逻辑分布到子类之间,减少了相互之间的依赖。
4、适用场合:当一个对象的行为取决于它的状态,并且它必须在运行中,时刻根据自己的状态改变它的行为时,就可以考虑使用状态模式。
5、组成:
(1)、上下文环境:它定义了客户程序需要的几口并维护一个具体状态角色的实例,将与状态相关的操作委托给当前状态的对象来处理。
(2)、抽象状态类:定义一个接口封装使用上下文环境的特定状态相关行为。
(3)、具体状态类:实习抽象状态定义的接口。