<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 行為型 設計模式被分成三大類,創建型,結構型,行為型。具體要闡述為什么這么分,這個問題,暫時解決不了,但是我們能做的是,合理的運用它。對于行為型設計模式,區別于其他兩種的就是:它側重的是對“方法”的操作。 下面是對幾個行為型的設計模式的理解。 ## 一、模板方法 1、概述 將一個操作的算法的骨架和具體算法實現分離——解耦 骨架在父類中,算法延遲到子類實現,就可以有N多實現——多態的體現 回顧一下類圖,看看模板解決的問題: ![](https://box.kancloud.cn/2016-02-18_56c5ce760b191.jpg) **模板的眼**:**;解決代碼重復,會算法有既定順序。** - 使用**繼承**,解決代碼重復的問題,重復的代碼抽象成一個基類,做成模板;杜絕子類出現不變的代碼,模板就是為了給子類瘦身。 - **基類中有代碼實現**:這里抽象出來不單單是某幾個方法聲明,方法中是可以有代碼實現的。只要是會發生重復的就放到父類中。 - **算法順序**:父類中(模板)必須有一個既定的方法來執行算法順序——算法的骨架,是既定的 - 子類只是不同算法的實現父類,不改變算法結構 **2、改造模板----算法骨架靈活** **算法的骨架是既定的,可以修改嗎?要不要修改?** 這里的算法骨架順序跟建造模式類似,順序基本是穩定。怎么說呢? 一般使用這兩種模式的“事物”,它的構成順序都是穩定的,不是經常需要變動的,這是一個前提,但是并不是說,這個順序一定不可以改變,為了靈活編程,可以通過委托來實現。往委托隊列注冊的過程就是排序的過程,委托是一大塊,不多說了。 **子類可以擴展父類嗎?** 當然是可以擴展的,因為是繼承呀。但是個人認為沒有多大意義。如果只是為了添加方法到子類中,跟復寫方法無關聯,那就是有點破壞單一原則的味道了。 **3、建造模式VS模板模式** 相同:都有既定的順序,僅此而已。 不同:兩個設計模式的適用范圍不同,解決問題不同,一個是創建型,一個是行為型,其他就不用啰嗦了吧。 ## 二、觀察者 **1、觀察者的幾點認識** - 一對多的依賴關系 - 多個對象觀察一個主題 - 主題發生變化,觀察的對象隨之變化 主題與觀察對象,觀察對象之間都是陌生的。一方負責變化,通知;一方負責接收,做出對應變化。 生活中的實例:訂閱網站。 通過類圖來分析觀察者的優缺點: ![](https://box.kancloud.cn/2016-02-18_56c5ce761f1c8.jpg) **優點**:解耦是觀察者的一大特色。通過依賴倒轉,面向接口編程的思想,給多個觀察者增加父類接口,讓被通知者成為主動觀察者,來實現觀察者和主題的銜接。 **不足**:主題只能和一種類型的觀察者進行關聯——從途中可以看出所有的觀察者都是繼承自一個父類:observer,所以這些觀察者都是一個父類,要想增加多個類型的觀察者,便有心無力了。 **2、觀察模式進階委托** 那要是我想通知多個類型的觀察者怎么辦?答案還是——**委托**? 1. 想要通知其他類型的觀察者,需要如下改動:最大的局限就是這個抽象的接口——observer,那么就把它去掉。 1. 抽象類不存在,那么主題中通知的方法(notify)就沒有意義了,也去掉。 1. 將動態通知觀察者的權利從主題移交給調用者。——主題和觀察者徹底解耦。 1. 聲明委托,在調用短端注冊各種類型的觀察者,執行調用。 ## 三、策略模式:封裝算法,算法變化不影響用戶使用。 (具體的在上篇博客中已經寫到了) **總結:**行為型的設計模式還有:職責鏈,命令,解釋,迭代,中介者,備忘錄,狀態,訪問者模式。這里只寫了三個,其他的幾個沒有這幾個上手。對于剩下的幾個模式:我們本著一個這樣的原則:what?when?how?
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看