一、状态模式
状态模式,当一个对象的内在状态发生改变时允许改变其行为行为,这个对象像是改变了其子类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的状态的一系列类当中,可以把复杂的判断逻辑简化。当然,如果这个状态判断比较简单,那就没有必要用“状态模式”了。这段话有点难以理解,简而言之就是,在一类中根据当前状态去实例化下一状态子类。下面是状态模式结构图。
State类,是一个抽象状态类,定义一个接口以封装与Context的特定状态相关的行为。
1 public abstract class State 2 { 3 public abstract void Handl(Context context); 4 }
ConcreateState类,是具体的状态类,继承State类,每一个子类实现一个与Context的一个状态相关的行为。
1 public class ConcreateStateA:State 2 { 3 public void Handl(Context context) 4 { 5 //设置ConcreateStateA的下一个状态ConcreateStateB 6 context.State=new ConcreateStateB(); 7 } 8 } 9 10 public class ConcreateStateB:State 11 { 12 public void Handl(Context context) 13 { 14 //设置ConcreateStateB的下一个状态ConcreateStateA 15 context.State=new ConcreateStateA(); 16 } 17 }