設計模式:行爲模式 - 狀態模式

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

 

主要解決: 當控制一個對象狀態轉換的條件表達式過於複雜時,把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的邏輯簡化。  (當然,如果這個狀態判斷很簡單,那就沒必要用狀態模式了)

 

什麼時候用?

當一個對象的行爲取決於它的狀態,並且它必須在運行時刻根據狀態改變它的行爲時,就可以考慮使用狀態模式了

 

UML:

JAVA:


public class StateTest {
    public static void main(String[] args) {
        Content content = new Content();
        content.getState().nextState(content);
        content.getState().xingwei();
        content.getState().nextState(content);
        content.getState().xingwei();
    }
}

interface State{
    void nextState(Content content);
    void xingwei();
}

class StateA implements State{

    @Override
    public void nextState(Content content) {
        content.setState(new StateB());
    }

    @Override
    public void xingwei() {
        System.out.println("A的行爲");
    }
}
class StateB implements State{
    @Override
    public void nextState(Content content) {
         content.setState(new StateA());
    }
    @Override
    public void xingwei() {
        System.out.println("B的行爲");
    }
}

class Content{
    private State state = new StateA();

    public void questNextState(){
        state.nextState(this);
    }

    public State getState() {
        return state;
    }

    public void setState(State state) {
        this.state = state;
    }
}

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章