設計模式----State(狀態)模式

來源:互聯網
上載者:User
設計模式 ----State( 狀態 ) 模式   GoF 允許一個對象在其內部狀態改變時,改變他的行為。對象看起來似乎修改了它的類。   在實際的程式開發中,我們經常會用到大量的if elseif else對某種狀態進行切換,特別是用慣了結構化語言(C語言)的人。如果狀態切換的情況反覆出現,我們就可以考慮到採用State模式來代替程式中大量的if elseif else了。在大多數情況下,如果對象的屬性不同那麼相應得對象的行為要求也不同。對GoF給出的定義做個通俗的解釋就是:一個對象在不同的狀態下有不同的行為,也可以說對象的每個狀態有著不同的行為。   下面給出案例代碼(我的這個案例比較簡單,但是能反映出State模式的意思):   先來一個狀態:
package  State;

public  abstract  class  State
... {
    
    /** *//** Creates a new instance of State */
    public State() ...{
    }
    
    public abstract void opration();
} // end class State

在來兩個具體的State:
package  State;

public  class  ConcreteStateA  extends  State
... {
    
    /** *//** Creates a new instance of ConcreteStateA */
    public ConcreteStateA() ...{
    }

    public void opration()
    ...{
        System.out.println("The Concrete A");
    }//end opration()
    
    public static ConcreteStateA getInstance()
    ...{
        return new ConcreteStateA();
    }//end getInstance()
}

package  State;

public  class  ConcreteStateB  extends  State
... {
    
    /** *//** Creates a new instance of ConcreteStateB */
    public ConcreteStateB() ...{
    }

    public void opration()
    ...{
        System.out.println("The Concrete B");
    }//end operation()
    
    public static ConcreteStateB getInstance()
    ...{
        return new ConcreteStateB();
    }//end getInstance()
    
} // end class ConcreteStateB

來一個情境:
package  State;

public  class  Context
... {
    private State state;
    /** *//** Creates a new instance of Context */
    public Context() ...{
    }
    

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.