設計模式總結2——結構型模式

來源:互聯網
上載者:User

結構型模式討論的是類和對象的結構,它採用繼承機制來組合介面或實現(類結構型模式),或者通過組合一些對象,從而實現新的功能(對象結構型模式)。GoF23中設計模式中結構型模式有7中。具體分類如下:

  • 適配器模式

將一個介面轉換成客戶希望的另一個介面,適配器模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作(即讓介面不同的類通過適配器後,協同工作)。

 

  • 橋接模式:

將抽象部分與它的實現部分分離,使他們都可以獨立地變化。

在解耦方式中,用彙總來代替繼承。繼承雖然是好東西,但是過渡運用,就會導致類的結構過於複雜,關係太多,難以維護,而更糟糕的是擴充性非常差。如果發現繼承體系中,有兩個甚至多個方面的變化,那麼久解耦這些不同方向的變化,通過對象組合的方式,把兩個角色之間的繼承關係改為了組合的關係,從而使這兩者可以各自獨立的變化。找出變化並封裝之。

 

  • 組合模式:

將對象組合成樹形結構以表示‘部分-整體’的階層,組合模式使得使用者對單個對象和組合對象的使用具有一致性。

 

  • 裝飾模式:

動態給一個對象添加一些額外的職責。就增加功能來說,裝飾模式相比產生子類更加靈活。

面對變化,如果採用繼承方式會產生大量的子類,使子類數目呈爆炸性增長。而事實上,這些子類多半隻是為某個對象增加一些職責,此時通過裝飾的方式,可以更加靈活、以動態、透明的方式給單個對象添加職責,不需要時,撤銷相應的職責。

 

  • 面板模式:

為子系統中的一組介面提供一個一致的介面,面板模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。

資訊的隱藏促進了軟體的複用,在面板模式中,採用引入一個外觀對象,讓一個軟體中的子系統見的通訊和相互依賴關係達到最小,也就為子系統間提供了一個單一而簡單的屏障。

 

  • 享元模式:

運用共用技術有效地支援大量細粒度的對象。

 

  • 代理模式:

為其他對象提供一種代理以控制對這個對象的訪問。

 

  • 代理模式與面板模式的區別:

代理對象代表一個單一對象而外觀對象代表一個子系統;代理的用戶端對象無法之間訪問目標對象,有代理提供對單獨的目標對象的存取控制,而外觀的客戶對象可以直接存取子系統中的各個對象,但通常由外觀對象提供對子系統個元件功能的簡化的共同層次的調用。

  • 代理模式與適配器模式的區別:

兩者都是屬於一種銜接性質的功能,代理是一種對象的代表,其他需要與這個對象打交道的操作都是和這個代表交涉。而適配器則不需要虛構出一個代表者,只需要為應付特定使用目的,將原來的類進行一些組合。

 

總之,面板模式注重簡化介面,適配器模式注重轉換介面,橋接模式注重分離介面,裝飾模式注重在穩定介面的前提下為對象擴充功能。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.