隨筆 - 117  文章 - 72  trackbacks - 0

          聲明:原創(chuàng)作品(標(biāo)有[原]字樣)轉(zhuǎn)載時請注明出處,謝謝。

          常用鏈接

          常用設(shè)置
          常用軟件
          常用命令
           

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 155795
          • 排名 - 390

          最新評論

          [關(guān)鍵字]:java,design pattern,設(shè)計模式,《Java與模式》,state pattern,狀態(tài)模式
          [環(huán)境]:StarUML5.0 + JDK6
          [作者]:Winty (wintys@gmail.com)
          [正文]:
            人的狀態(tài)變化:

            狀態(tài)模式類圖:

          /**
           * 狀態(tài)模式:state pattern
           *
           * 不使用狀態(tài)模式時,代碼可能會是這樣:
           * if (state.equals("awake")){
           *        System.out.println("awake:工作.");
           * }
           * else if(state.equals("asleep")){
           *        System.out.println("asleep:做夢.");
           * }
           * else ...
           *
           * @version 2009-5-18
           * @author Winty(wintys@gmail.com)
           */
          public class StateTest{
              public static void main(String[] args){
                  Person person = new Person();

                  person.doAction();

                  person.setState(new Asleep());
                  person.doAction();
              }
          }

          /**
           *環(huán)境:Context
           */
          class Person{
              private State state = new Awake();

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

              public void doAction(){
                  state.doAction();
              }
          }

          /**
           *抽象狀態(tài):State
           */
          interface State{
              public void doAction();
          }

          /**
           *具體狀態(tài)
           */
          class Awake implements State{
              public void doAction(){
                  System.out.println("awake:工作.");
              }
          }

          /**
           *具體狀態(tài)
           */
          class Asleep implements State{
              public void doAction(){
                  System.out.println("asleep:做夢.");
              }
          }
          posted on 2009-05-18 23:03 天堂露珠 閱讀(1199) 評論(1)  編輯  收藏 所屬分類: Pattern

          FeedBack:
          # re: [原]狀態(tài)模式 2009-05-19 12:08 xx
          狀態(tài)模式 充分體現(xiàn)了開閉原則

          如果有新的狀態(tài)加入 不需要修改Person類



          congdepeng@hotmail.com  回復(fù)  更多評論
            
          主站蜘蛛池模板: 大石桥市| 肃宁县| 安多县| 岑溪市| 砚山县| 忻州市| 金乡县| 合江县| 成都市| 布拖县| 禄劝| 美姑县| 宿松县| 武安市| 成都市| 渑池县| 海城市| 梓潼县| 清水河县| 宁城县| 湘阴县| 尚义县| 淄博市| 财经| 新河县| 繁昌县| 岐山县| 乌兰县| 枣强县| 新竹县| 鄂伦春自治旗| 东乡族自治县| 新泰市| 罗江县| 恩施市| 美姑县| 诸城市| 舒城县| 仪征市| 手游| 依安县|