隨筆 - 117  文章 - 72  trackbacks - 0

          聲明:原創作品(標有[原]字樣)轉載時請注明出處,謝謝。

          常用鏈接

          常用設置
          常用軟件
          常用命令
           

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 156406
          • 排名 - 390

          最新評論

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

            狀態模式類圖:

          /**
           * 狀態模式:state pattern
           *
           * 不使用狀態模式時,代碼可能會是這樣:
           * 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();
              }
          }

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

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

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

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

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

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

          FeedBack:
          # re: [原]狀態模式 2009-05-19 12:08 xx
          狀態模式 充分體現了開閉原則

          如果有新的狀態加入 不需要修改Person類



          congdepeng@hotmail.com  回復  更多評論
            
          主站蜘蛛池模板: 旌德县| 秭归县| 禄丰县| 东乌珠穆沁旗| 湟源县| 松滋市| 观塘区| 海门市| 方正县| 林州市| 花垣县| 曲水县| 来宾市| 秭归县| 吉首市| 南城县| 上虞市| 绍兴市| 巨鹿县| 疏勒县| 金沙县| 咸宁市| 乌拉特后旗| 临海市| 罗城| 荆州市| 永清县| 大邑县| 德惠市| 平泉县| 庆云县| 环江| 宁津县| 崇信县| 德昌县| 左贡县| 和政县| 塔城市| 西青区| 长岭县| 巴林右旗|