<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
    狀態模式(state pattern)和策略模式(strategy pattern)的實現方法非常類似,都是利用多態把一些操作分配到一組相關的簡單的類中,因此很多人認為這兩種模式實際上是相同的。然而
    •在現實世界中,策略(如促銷一種商品的策略)和狀態(如同一個按鈕來控制一個電梯的狀態,又如手機界面中一個按鈕來控制手機)是兩種完全不同的思想。當我們對狀態和策略進行建模時,這種差異會導致完全不同的問題。例如,對狀態進行建模時,狀態遷移是一個核心內容;然而,在選擇策略時,遷移與此毫無關系。另外,策略模式允許一個客戶選擇或提供一種策略,而這種思想在狀態模式中完全沒有。 
    •一個策略是一個計劃或方案,通過執行這個計劃或方案,我們可以在給定的輸入條件下達到一個特定的目標。策略是一組方案,他們可以相互替換;選擇一個策略,獲得策略的輸出。策略模式用于隨不同外部環境采取不同行為的場合。我們可以參考微軟企業庫底層Object Builder的創建對象的strategy實現方式。 
    •而狀態模式不同,對一個狀態特別重要的對象,通過狀態機來建模一個對象的狀態;狀態模式處理的核心問題是狀態的遷移,因為在對象存在很多狀態情況下,對各個business flow,各個狀態之間跳轉和遷移過程都是及其復雜的。例如一個工作流,審批一個文件,存在新建、提交、已修改、HR部門審批中、老板審批中、HR審批失敗、老板審批失敗等狀態,涉及多個角色交互,涉及很多事件,這種情況下用狀態模式(狀態機)來建模更加合適;把各個狀態和相應的實現步驟封裝成一組簡單的繼承自一個接口或抽象類的類,通過另外的一個Context來操作他們之間的自動狀態變換,通過event來自動實現各個狀態之間的跳轉。在整個生命周期中存在一個狀態的遷移曲線,這個遷移曲線對客戶是透明的。我們可以參考微軟最新的WWF 狀態機工作流實現思想。 
    •在狀態模式中,狀態的變遷是由對象的內部條件決定,外界只需關心其接口,不必關心其狀態對象的創建和轉化;而策略模式里,采取何種策略由外部條件(C)決定。 
    posted on 2015-04-21 02:43 abin 閱讀(375) 評論(0)  編輯  收藏 所屬分類: PatternDesigns
    主站蜘蛛池模板: 亚洲精品视频在线观看免费| 免费一级肉体全黄毛片| 亚洲国产成人91精品| 永久免费av无码网站大全| 99视频在线观看免费| 学生妹亚洲一区二区| 亚洲精品亚洲人成在线观看| 91麻豆最新在线人成免费观看| 国产青草亚洲香蕉精品久久 | 亚洲AV日韩精品久久久久| 蜜臀AV免费一区二区三区| 99亚洲乱人伦aⅴ精品| 亚洲AV无码成人专区片在线观看 | 久久九九全国免费| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲av无码一区二区三区四区| 亚洲最大激情中文字幕| 毛片在线免费视频| 免费高清国产视频| 国产精品亚洲一区二区三区| 亚洲精品福利视频| 精品国产日韩亚洲一区| 一二三四免费观看在线视频中文版| 久青草视频97国内免费影视| 亚洲色偷偷综合亚洲AV伊人蜜桃| 国产亚洲精品一品区99热| 国产又黄又爽又刺激的免费网址| 97av免费视频| 免费久久人人爽人人爽av| 老司机福利在线免费观看| 亚洲精品中文字幕无乱码麻豆| 亚洲欧洲成人精品香蕉网| 国产无遮挡吃胸膜奶免费看视频 | a级毛片免费在线观看| 精品韩国亚洲av无码不卡区| 亚洲午夜精品一区二区公牛电影院| 国产亚洲精品a在线无码| 亚洲国产婷婷香蕉久久久久久| 美女视频黄是免费的网址| 免费人妻无码不卡中文字幕系 | 波多野结衣中文一区二区免费|