设计模式之状态模式

定义(百度百科):
        当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

UML类图:

 

具体代码:

public abstract class State {
    public abstract void handle();
}

public class ConcreteState extends State {
    @Override
    public void handle() {

    }
}

public class ConcreteState extends State {
    @Override
    public void handle() {

    }
}

模块说明:
      Context:它定义了客户需要的接口并维护一个具体状态角色(State)的实例,将与状态相关的操作交给当前的ConcreteState对象来处理
      State:定义一个接口以封装使用Context的的一个特定状态相关的行为
      ConcreteState:实现抽象状态State的具体实例

适用场景:
       对象状态的改变将导致行为的变化。
       代码中包含非常多状态判断的语句,导致客户类与类库之间的耦合增强

优缺点:
优点:
         简化应用逻辑控制(对状态的控制)
         更好的区分状态和行为

缺点:
        状态模式的使用必然会增加系统中ConcreteState的个数,导致系统运行开销增大

总结:
       根据状态分离和选择行为

posted @ 2017-09-04 16:47  重名  阅读(195)  评论(0编辑  收藏  举报