<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
    主站蜘蛛池模板: 亚洲一区免费观看| a视频在线观看免费| 亚洲精品无码久久久久AV麻豆| caoporm超免费公开视频| 老司机亚洲精品影院无码| 成人免费无遮挡无码黄漫视频| 亚洲精品二区国产综合野狼| 久久精品国产免费| 亚洲中文久久精品无码ww16| 日本免费一区二区在线观看| 春暖花开亚洲性无区一区二区| 成人午夜亚洲精品无码网站 | 最近中文字幕免费2019| 亚洲欧美日韩自偷自拍| 国产亚洲美女精品久久久久狼| 亚洲免费福利在线视频| 亚洲人成在线免费观看| 亚洲av中文无码| 免费阿v网站在线观看g| 一级免费黄色大片| 自拍偷区亚洲国内自拍| 亚洲va在线va天堂va四虎| 免费va在线观看| yellow视频免费在线观看| 亚洲日本久久久午夜精品| 亚洲AV无码一区东京热| 高清在线亚洲精品国产二区| 一级一级一级毛片免费毛片| 亚洲免费福利在线视频| 亚洲成AV人片在线观看无| 国产极品粉嫩泬免费观看| 亚洲免费视频播放| 黄色免费在线网站| 五月天婷婷免费视频| 亚洲国产精品一区| 91免费国产在线观看| 成全高清在线观看免费| 无码日韩人妻AV一区免费l| 亚洲国产AV无码一区二区三区 | 亚洲成人激情在线| 亚洲精品色午夜无码专区日韩|