DANCE WITH JAVA

          開發出高質量的系統

          常用鏈接

          統計

          積分與排名

          好友之家

          最新評論

          Java 中的模式 --- 簡單的狀態模式

          狀態模式很簡單,無論是理解,還是實現,都很簡單。
          一、定義:
          1,狀態模式允許一個"對象"在其內部狀態改變的時候改變其行為。
          2,狀態模式的角色:
          抽象狀態,具體狀態,環境(context)角色
          狀態模式的角色比較簡單,不用解釋了,看名字就能了解。
          二、狀態模式的實現
          1,簡單實例
           1public class Context{
           2    private State state;
           3    public void sampleOperation(){
           4        state.sampleOperation();
           5    }

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

           9}

          10public interface State{
          11    void sampleOperation();
          12}

          13public class ConcreteState implements State {
          14    public void sampleOperation();
          15}
          2、狀態模式的經典實現
          Tcp就是狀態模式的一個經典實現:TcpConnect 他有三個狀態,TcpEstablished  TcpListen  TcpClosed
          TcpConnect的功能會跟著狀態的改變而改變。或是Established,或是Listen,或是Closed
          三、狀態模式的與策略模式,看到上邊的部分,很容易讓人想到策略模式,這兩個模式有什么區別呢?如何使用
          策略模式:
          1,當一個環境角色選擇了一個具體的策略,那么在整個環境類的生命周期都不會改變
          2,策略模式的環境自己選擇一個具體的策略
          3,策略模式并不明確告訴客戶端它所選擇的具體策略是什么,對客戶是黑箱。
          狀態模式:
          1,在整個環境類的生命周期中會有明顯的狀態改變。
          2,狀態模式是被外在原因放入一個策略
          3,狀態模式明顯的告訴客戶端當前的狀態,對客戶是白箱。

          posted on 2006-12-03 11:51 dreamstone 閱讀(3506) 評論(1)  編輯  收藏 所屬分類: 設計模式

          評論

          # re: Java 中的模式 --- 簡單的狀態模式 2006-12-06 09:14 sgecko

          解釋的不錯,不過從分類上講,我覺得狀態模式應該是策略模式的一個變態。  回復  更多評論   

          主站蜘蛛池模板: 青冈县| 花垣县| 新巴尔虎右旗| 西丰县| 泸西县| 沿河| 吐鲁番市| 东乡族自治县| 临漳县| 洪泽县| 惠来县| 绥阳县| 萝北县| 金坛市| 长寿区| 文昌市| 日土县| 临江市| 玉山县| 惠安县| 常山县| 鄂托克前旗| 清流县| 鄂伦春自治旗| 开封县| 泰来县| 孟连| 贵德县| 合作市| 广饶县| 海兴县| 志丹县| 乾安县| 晴隆县| 额济纳旗| 石首市| 波密县| 新源县| 扶沟县| 昆明市| 三江|