<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國際加速解決方案。 廣告
                # 處理多維度變化——橋接模式(四) 10.4 適配器模式與橋接模式的聯用 在軟件開發中,適配器模式通常可以與橋接模式聯合使用。適配器模式可以解決兩個已有接口間不兼容問題,在這種情況下被適配的類往往是一個黑盒子,有時候我們不想也不能改變這個被適配的類,也不能控制其擴展。適配器模式通常用于現有系統與第三方產品功能的集成,采用增加適配器的方式將第三方類集成到系統中。橋接模式則不同,用戶可以通過接口繼承或類繼承的方式來對系統進行擴展。 橋接模式和適配器模式用于設計的不同階段,橋接模式用于系統的初步設計,對于存在兩個獨立變化維度的類可以將其分為抽象化和實現化兩個角色,使它們可以分別進行變化;而在初步設計完成之后,當發現系統與已有類無法協同工作時,可以采用適配器模式。但有時候在設計初期也需要考慮適配器模式,特別是那些涉及到大量第三方應用接口的情況。 下面通過一個實例來說明適配器模式和橋接模式的聯合使用: 在某系統的報表處理模塊中,需要將報表顯示和數據采集分開,系統可以有多種報表顯示方式也可以有多種數據采集方式,如可以從文本文件中讀取數據,也可以從數據庫中讀取數據,還可以從Excel文件中獲取數據。如果需要從Excel文件中獲取數據,則需要調用與Excel相關的API,而這個API是現有系統所不具備的,該API由廠商提供。使用適配器模式和橋接模式設計該模塊。 在設計過程中,由于存在報表顯示和數據采集兩個獨立變化的維度,因此可以使用橋接模式進行初步設計;為了使用Excel相關的API來進行數據采集則需要使用適配器模式。系統的完整設計中需要將兩個模式聯用,如圖10-6所示: ![](http://my.csdn.net/uploads/201204/16/1334507018_4999.gif) 10.5 橋接模式總結 橋接模式是設計Java虛擬機和實現JDBC等驅動程序的核心模式之一,應用較為廣泛。在軟件開發中如果一個類或一個系統有多個變化維度時,都可以嘗試使用橋接模式對其進行設計。橋接模式為多維度變化的系統提供了一套完整的解決方案,并且降低了系統的復雜度。 1.主要優點 橋接模式的主要優點如下: (1)分離抽象接口及其實現部分。橋接模式使用“對象間的關聯關系”解耦了抽象和實現之間固有的綁定關系,使得抽象和實現可以沿著各自的維度來變化。所謂抽象和實現沿著各自維度的變化,也就是說抽象和實現不再在同一個繼承層次結構中,而是“子類化”它們,使它們各自都具有自己的子類,以便任何組合子類,從而獲得多維度組合對象。 (2)在很多情況下,橋接模式可以取代多層繼承方案,多層繼承方案違背了“單一職責原則”,復用性較差,且類的個數非常多,橋接模式是比多層繼承方案更好的解決方法,它極大減少了子類的個數。 (3)橋接模式提高了系統的可擴展性,在兩個變化維度中任意擴展一個維度,都不需要修改原有系統,符合“開閉原則”。 2.主要缺點 橋接模式的主要缺點如下: (1)橋接模式的使用會增加系統的理解與設計難度,由于關聯關系建立在抽象層,要求開發者一開始就針對抽象層進行設計與編程。 (2)橋接模式要求正確識別出系統中兩個獨立變化的維度,因此其使用范圍具有一定的局限性,如何正確識別兩個獨立維度也需要一定的經驗積累。 3.適用場景 在以下情況下可以考慮使用橋接模式: (1)如果一個系統需要在抽象化和具體化之間增加更多的靈活性,避免在兩個層次之間建立靜態的繼承關系,通過橋接模式可以使它們在抽象層建立一個關聯關系。 (2)“抽象部分”和“實現部分”可以以繼承的方式獨立擴展而互不影響,在程序運行時可以動態將一個抽象化子類的對象和一個實現化子類的對象進行組合,即系統需要對抽象化角色和實現化角色進行動態耦合。 (3)一個類存在兩個(或多個)獨立變化的維度,且這兩個(或多個)維度都需要獨立進行擴展。 (4)對于那些不希望使用繼承或因為多層繼承導致系統類的個數急劇增加的系統,橋接模式尤為適用。 練習 > Sunny軟件公司欲開發一個數據轉換工具,可以將數據庫中的數據轉換成多種文件格式,例如txt、xml、pdf等格式,同時該工具需要支持多種不同的數據庫。試使用橋接模式對其進行設計。
                  <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>

                              哎呀哎呀视频在线观看