1. 程式人生 > >設計模式(十三)狀態模式

設計模式(十三)狀態模式

狀態模式:當一個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類

狀態模式主要解決的是當控制一個物件的狀態轉換的條件表示式過於複雜的時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的類判斷邏輯化

狀態模式的類圖:

public abstract class State {
    public abstract void Handle(Context context);
}
public class ConcreteStateA extends State{
    @Override
    public void Handle(Context context) {
        context.state=new ConcreteStateB();
    }
}
public class ConcreteStateB extends State{
    @Override
    public void Handle(Context context) {
        context.state=new ConcreteStateA();
    }
}
public class Context {
    protected State state;
    public Context(State state)
    {
        this.state=state;
    }

    public State getState() {
        return state;
    }

    public void setState(State state) {
        this.state = state;
    }
    public void request()
    {
        System.out.println("當前工作狀態"+state.getClass().getName());
        //對請求作出處理,並設定下一狀態
        state.Handle(this);
    }

}
public class Main {
    public static void main(String[] args) {
        Context c=new Context(new ConcreteStateA());
        c.request();
        c.request();
        c.request();
        c.request();
    }
}