iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 28
0
自我挑戰組

初探設計模式系列 第 28

[ Day 28 ] 初探設計模式 - 結構型模式

前言

現在剛進入星期日···(週六半夜的概念),喝了點酒,明天早上還要健行,其實該睡覺啦~但是惦記著鐵人賽還有最後三天,還是稍微先寫一些,明天健行完吃個飯就已經下午了,再繼續接著寫也不會太累啦,第一次挑戰希望能安全的完賽。

健行、中午吃飯、到觀光區到處看看展覽古蹟,又去夜市吃了晚餐跟朋友聊了聊天,晚上九點終於回到家了!趕快把昨天晚上沒寫完的東西補完!

定義

結構型模式整理既有的類別,並且將這些類別做一些適當的轉換,最終達到更容易使用更加靈活變化他們的表示···等等的效果。

  • 轉接器模式 ( Adapter Pattern )
  • 橋接模式 ( Bridge Patern )
  • 組合模式 ( Composite Pattern )
  • 裝飾模式 ( Decorator Pattern )
  • 外觀模式 ( Facade Pattern )
  • 享元模式 ( Flyweight Pattern )
  • 代理模式 ( Proxy Pattern )

轉接器模式 ( Adapter Pattern )

將一個類別的介面轉換為客戶希望的另一個介面。使得原本由於介面不相容而不能一起工作的那些類別可以一起工作。

雖然本來的物件、方法不適合現在使用,但希望建立一個可以重用這個類別的機制,讓這個類別跟其他類別一起共同工作。

 Adapter Pattern

橋接模式 ( Bridge Patern )

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

代替繼承的關係從而使用組合的關係,像是在借用別人所實踐出的方法,使這兩者可以各自獨立實現其獨立的變化。

 Bridge Patern

組合模式 ( Composite Pattern )

將物件組合成樹形結構以表示「部分-整體」結構,組合模式使得用戶對單個物件和組合物件的使用具有一致性。

適合用來表示一種不論是個體,或是組合起來一個部分(整體),都需要做一些相同的運算(工作)的模式,例如公司(團體)的組織。

動態的添加職責像是在事後(程式碼中)才定義各個在基本之外需要具備的其他功能(在android中有關於view的實踐是使用這種方式)。

 Composite Pattern

裝飾模式 ( Decorator Pattern )

動態的給一個物件添加一下額外的職責。就增加功能性來說,裝飾模式比產生子類別更加靈活。

組合模式是一種樹狀的結構,而裝飾模式像是將一個Component經過各個Decorator包裹起來,核心是Component、而Decorator像是糖果或是巧克力一般一層一層包裹的結構。

 Decorator Pattern

外觀模式 ( Facade Pattern )

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

常常會是重構過程中第一步驟所做的模式。為子系統引入了這個單一的屏障,讓程式碼更容易被理解而且依賴關係較小。

 Facade Pattern

享元模式 ( Flyweight Pattern )

為運用共同的技術有效地支援大量細粒度的物件。

最早期的應用有各個字元(文字)的顯示···等等,為了避免佔用資源過多,透過相同物件共享的機制增加效能。

 Flyweight Pattern

代理模式 ( Proxy Pattern )

為其他物件提供一種代理以控制對這個物件的存取。

單一另一個物件的代理人。

 Proxy Pattern

參考資料
-- 大話設計模式
-- Android源碼設計模式解析與實戰
-- Design Patterns in Object Oriented Programming


上一篇
[ Day 27 ] 初探設計模式 - 建立型模式
下一篇
[ Day 29 ] 初談設計模式 - 行為型模式(1)
系列文
初探設計模式30

尚未有邦友留言

立即登入留言