設計模式學習筆記十三——結構型模式總結

來源:互聯網
上載者:User
        學習建立型模式,逐漸領會了面向介面編程的妙處,實現依賴抽象的原則。學習結構型模式,使我看到了使用對象組合帶來的好處,相對繼承,能帶來很多優點,這在Bridge和Decorator模式中尤其明顯。其實,結構型模式在項目中隨處可見,以前的項目中不自覺就會用到,雖然以前不知道那就是模式,當然,很多時候,我並沒有對那些對象進行抽象和提煉,仍然是強耦合。
        型模式都有點類似,無非是把類的職責剝離開來,通過兩個部分類的組合來實現複雜的功能,而這兩部分往往是獨立變化的,通過隔離它們,自然能帶來好處——更能面對變化的挑戰。而如果用繼承,要面對多個方面或方向的變化則很困難。
1、Adapter、Bridge、Facade
        一個對象提供了一定程度上的間接性,都通過別的對象介面向他們轉寄請求。實際上,就是把接受請求和處理請求的對象進行了隔離,接受請求對象把處理交給處理請求的對象來處理,它們都是可以獨立變化的。
        的不同點在於目的不同,Adapter解決介面不相容問題,它使得介面不相容的類可以協同工作,而不需要考慮這些介面的實現,以及這些類的演化趨勢,它就相當於一個轉換器,轉寄請求。Bridge模式解決的是抽象和實現獨立變化的問題,它將抽象和實現隔離,並進行橋接,使得這兩部分可以獨立變化。抽象部分有穩定的介面,由實現部分來具體實現。
        Adapter和Bridge模式通常用於不同的軟體生命週期階段。Adapeter算是補救措施,當兩個類不相容而又必須協同工作時,用它進行轉接,此處耦合使用前不可預見。而使用Bridge模式,則事Crowdsourced Security Testing道:一個抽象有多個實現部分,並且這兩部分獨立演化,如果沒有這個需求,也就不要使用Bridge模式。Adapter模式在類設計好後實施,而Bridge模式在類設計好前實施。
        Adapter和Facade的區別,Facade模式並不是Adapter的集合,也就是說它並不是一組對象的適配器。Adapter複用以前的一個介面,而Facade模式重新定義一個介面,在對外提供的介面內使用一些子物件進行操作。Adapter使兩個已有介面協同工作,而不是定義新的介面。
2、Composite、Decorator、Proxy
        Composite和Decorator模式都基於遞迴組合組織可變數目的對象,但是他們的目的截然不同。Composite通過統一單一對象和組合對象的介面,使得對外透明化,客戶程式不需要知道它們的任何細節,使用單一對象和組合對象如此一致,它重在表示,即怎麼表示單一對象和組合對象,怎麼使用起來具有一致性?而Decorator模式解決的是對象功能擴充的問題,它把對象本身的變化和其擴充變化隔離開來,使得新的對象擴充功能如此簡單,擺脫了為擴充多個子物件的多個功能帶來子類膨脹化問題,同時也為實現在運行時動態擴充項物件功能提供了可能,這通過單純繼承無法做到。在思想上,它和Bridge模式如出一轍。
        Decorator和Proxy都引用其他對象,向這個對象轉寄請求,但是,他們有不同的設計目的。Proxy不能動態添加或刪除對象的擴充功能,也不為遞迴組合而設計。它的作用是當訪問一個實體物件不方便和不符合要求時,為這個實體物件提供一個代理對象,通過這個代理對象向其轉寄請求,進行處理,如遠端存取。在Proxy模式中,實體物件實現了要訪問的關鍵功能,代理對象提供或拒絕客戶對它的訪問;而Decorator模式中,組件即主體對象僅提供了部分或準系統,一個或多個Decorator對象實現其他功能。Decorator適合在編譯時間不能確定其全部功能的情況,可以在運行時刻動態添加或刪除功能。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.