State模式

一个函数内的方法过长,则出现了坏味道。这往往违背了单一职责原则,并且还将违背开闭原则。

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

状态模式 主要解决的是 控制一个对象状态转换的条件表达式过于复杂的问题。把状态的判断逻辑转移到表示不同的状态的一系列类中,简化复杂的判断逻辑。

如果原状态判断很简单,则没必要用状态模式了。

状态模式的好处是将与特定状态相关的行为局部化,并将 不同状态的行为分开。

将特定的状态相关的行为放入一个对象中,由于所有与状态相关的代码都存在于某个ConcreteState中,所以通过定义新的子类可以容易地增加新的状态和转换。

状态模式通过把各种状态转移逻辑分布到State的子类之间,减少相互依赖。

当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式了。

应用示例:

业务类中包含一个状态类,状态对象在内部根据业务对象的条件值判断哪个范围是它本状态对象要处理的,哪些范围要交给另外的状态对象处理。这样随意改变业务对象的状态值,都可以调用状态对象得到相应的结果。

如果状态处理根据业务需求有变化,则仅需要对某个状态类做变化:修改或新增。


你可能感兴趣的:(程序设计)