DANCE WITH JAVA

          開發(fā)出高質(zhì)量的系統(tǒng)

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          好友之家

          最新評(píng)論

          Java 中的模式 --- 簡(jiǎn)單的狀態(tài)模式

          狀態(tài)模式很簡(jiǎn)單,無論是理解,還是實(shí)現(xiàn),都很簡(jiǎn)單。
          一、定義:
          1,狀態(tài)模式允許一個(gè)"對(duì)象"在其內(nèi)部狀態(tài)改變的時(shí)候改變其行為。
          2,狀態(tài)模式的角色:
          抽象狀態(tài),具體狀態(tài),環(huán)境(context)角色
          狀態(tài)模式的角色比較簡(jiǎn)單,不用解釋了,看名字就能了解。
          二、狀態(tài)模式的實(shí)現(xiàn)
          1,簡(jiǎn)單實(shí)例
           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、狀態(tài)模式的經(jīng)典實(shí)現(xiàn)
          Tcp就是狀態(tài)模式的一個(gè)經(jīng)典實(shí)現(xiàn):TcpConnect 他有三個(gè)狀態(tài),TcpEstablished  TcpListen  TcpClosed
          TcpConnect的功能會(huì)跟著狀態(tài)的改變而改變。或是Established,或是Listen,或是Closed
          三、狀態(tài)模式的與策略模式,看到上邊的部分,很容易讓人想到策略模式,這兩個(gè)模式有什么區(qū)別呢?如何使用
          策略模式:
          1,當(dāng)一個(gè)環(huán)境角色選擇了一個(gè)具體的策略,那么在整個(gè)環(huán)境類的生命周期都不會(huì)改變
          2,策略模式的環(huán)境自己選擇一個(gè)具體的策略
          3,策略模式并不明確告訴客戶端它所選擇的具體策略是什么,對(duì)客戶是黑箱。
          狀態(tài)模式:
          1,在整個(gè)環(huán)境類的生命周期中會(huì)有明顯的狀態(tài)改變。
          2,狀態(tài)模式是被外在原因放入一個(gè)策略
          3,狀態(tài)模式明顯的告訴客戶端當(dāng)前的狀態(tài),對(duì)客戶是白箱。

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

          評(píng)論

          # re: Java 中的模式 --- 簡(jiǎn)單的狀態(tài)模式 2006-12-06 09:14 sgecko

          解釋的不錯(cuò),不過從分類上講,我覺得狀態(tài)模式應(yīng)該是策略模式的一個(gè)變態(tài)。  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 广州市| 隆昌县| 吐鲁番市| 武强县| 吉首市| 和林格尔县| 丰城市| 郴州市| 文安县| 东阿县| 彭水| 建德市| 山东省| 民县| 汝州市| 炉霍县| 拉萨市| 广东省| 儋州市| 泾源县| 浦县| 闽清县| 长沙市| 高青县| 淮南市| 精河县| 镇雄县| 青岛市| 九龙城区| 斗六市| 库伦旗| 秦皇岛市| 府谷县| 天等县| 湘阴县| 昌黎县| 淮安市| 梅州市| 新乡县| 邛崃市| 长顺县|