<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                >[success] # 書中也給了四條組合模式注意點 ~~~ 1.'組合模式不是父子關系' 組合模式是一種 HAS-A(聚合)的關系,而不是 IS-A。組合對象包含一組葉對象,但 Leaf 并不是 Composite 的子類。組合對象把請求委托給它所包含的所有葉對象,它們能夠合作的關鍵 是擁有相同的接口。 2.'對葉對象操作的一致性' 組合模式除了要求組合對象和葉對象擁有相同的接口之外,還有一個必要條件,就是對一組 葉對象的操作必須具有一致性。只有用一致的方式對待列表中的每個葉對象的時候,才適合使用組 合模式。 3.'雙向映射關系' 發放過節費的通知步驟是從公司到各個部門,再到各個小組,最后到每個員工的郵箱里。這 本身是一個組合模式的好例子,但要考慮的一種情況是,也許某些員工屬于多個組織架構。比如 某位架構師既隸屬于開發組,又隸屬于架構組,對象之間的關系并不是嚴格意義上的層次結構, 在這種情況下,是不適合使用組合模式的,該架構師很可能會收到兩份過節費。 這種復合情況下我們必須給父節點和子節點建立雙向映射關系,一個簡單的方法是給小組和員 工對象都增加集合來保存對方的引用。但是這種相互間的引用相當復雜,而且對象之間產生了過多 的耦合性,修改或者刪除一個對象都變得困難,此時我們可以引入中介者模式來管理這些對象。 4.'用職責鏈模式提高組合模式性能' 在組合模式中,如果樹的結構比較復雜,節點數量很多,在遍歷樹的過程中,性能方面也許 表現得不夠理想。有時候我們確實可以借助一些技巧,在實際操作中避免遍歷整棵樹,有一種現 成的方案是借助職責鏈模式。職責鏈模式一般需要我們手動去設置鏈條,但在組合模式中,父對 象和子對象之間實際上形成了天然的職責鏈。讓請求順著鏈條從父對象往子對象傳遞,或者是反 過來從子對象往父對象傳遞,直到遇到可以處理該請求的對象為止,這也是職責鏈模式的經典運 用場景之一。 ~~~
                  <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>

                              哎呀哎呀视频在线观看