設計模式之State模式(筆記)

狀態模式:當一個對象的內在狀態發生改變時允許改變其內在行爲,這個對象看起來像是改變了其類。
狀態模式主要是解決的是當控制一個對象狀態轉換的條件表達式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的判斷邏輯簡化。
這裏寫圖片描述
首先定義一個IState接口

public interface IState {

    public void handle(Context context);
}

接着定義具體的狀態類,繼承IState接口

public class ConcreteStateA implements IState{

    @Override
    public void handle(Context context) {
        context.setState(new ConcreteStateB());
    }

}

public class ConcreteStateB implements IState{

    @Override
    public void handle(Context context) {
        context.setState(new ConcreteStateA());
    }

}

然後定義Context類

public class Context {

    private IState state;

    public Context(IState state){
        this.state=state;
    }

    //可讀寫的狀態屬性,用來設置新狀態
    public void setState(IState state){
        this.state=state;
        System.out.println(state.getClass().getName());
    }
    //獲取當前狀態
    public IState getState(){
        return state;
    }

    public void request(){
        state.handle(this);
    }

}

客戶端代碼

public static void main(String[] args) {
        IState state=new ConcreteStateA();
        Context context=new Context(state);
        context.request();
        context.request();
        context.request();
        context.request();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章