隨筆 - 117  文章 - 72  trackbacks - 0

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

          常用鏈接

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

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 156410
          • 排名 - 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  回復  更多評論
            
          主站蜘蛛池模板: 华容县| 开原市| 贵定县| 松阳县| 白城市| 黄骅市| 剑河县| 贵阳市| 亳州市| 德江县| 新疆| 洛宁县| 克拉玛依市| 嘉黎县| 台东县| 泗阳县| 米易县| 荃湾区| 文昌市| 延吉市| 锡林郭勒盟| 阆中市| 宝山区| 九江县| 辽宁省| 廊坊市| 蓬安县| 巴彦淖尔市| 高淳县| 元阳县| 兰西县| 五峰| 五指山市| 凉山| 长岛县| 循化| 宾川县| 巴马| 玛纳斯县| 武平县| 甘孜县|