iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 30
1

這30天內我們介紹了什麼事Design Pattern、Design Pattern的原則及分類以及各種Design Pattern及應用。在這來做個總結。

什麼是Design Pattern?

Design Pattern並不直接用來完成程式碼的編寫,而是描述在各種不同情況下,要怎麼解決問題的一種"方案"

為什麼要用Design Pattern?

為了建立一個方便維護及擴充的軟體系統。

Design Principle


單一職責原則(Single Responsibility Principle)

一個類別專注做一件事,不應該將不相關的功能放在同一個程式碼內,使整體程式碼中的每個部分都與自己實作的功能相關。

開閉原則(Open Closed Principle )

系統需要被擴充時,應該藉由新增新的程式碼來擴充新功能,而非修改原本的程式碼來擴充新功能。

里氏替換原則(Liskov Substitution Principle)

子類別可以擴充套件父類別的功能,但不改變父類別原有的功能。

介面隔離原則(Interface Segregation Principles)

類別不應該強迫依賴他們不使用的方法。

依賴反轉原則(Dependency Inversion Principle)

高層模組不應該依賴低層模組,兩者皆應依賴於抽象;抽象不應該依賴細節,細節應該依賴於抽象。

合成/聚合複用原則(Composite/Aggregate Reuse Principle)

遇到套件重複使用的問題,應該先考慮使用組合/聚合的方式,其次才是繼承。若要使用繼承,則須符合里氏替換原則。

最少知識原則(Least Knowledge Principle)

**迪米特法則(Law of Demeter)** 又稱最少知識原則(Least Knowledge Principle)。只與自己直接有關係的類別溝通。

創建型模式:如何建立物件,它的特點在於是將物件的建立與使用分開。


單例模式 | Singleton Pattern

Singleton = One Instance ONLY。單例模式希望執行一個且唯一一個Singleton物件且Singleton物件可以全局使用。

工廠方法模式 | Factory Method Pattern

定義了一個建立物件的insterface,由子類別決定實體化的類別為何者。

抽象工廠模式 | Abstract Factory

抽象工廠主要是由繼承來的次類別來決定要產生哪種實體產品,其主要目的是將客戶從實體型態中鬆綁。

生成器模式 | Builder Pattern

生成器模式就是將元件做分離,依照需求一一組裝起來,建立不同需求的物件。如同不同的人組一台電腦需要各種不同的零件一樣。

原型模式 | Prototype Pattern

建立原型物件,透過複製的方式建立大量物件,而非傳統的建立方式。這為原型模式主張的目標,不但能提升效能,也隱藏了創建新物件的復雜性。

結構型模式:關注於整體最終的結構,如何將類別及物件通過繼承和組合,構建出更加複雜的結構。


適配器模式 | Adapter Pattern

適配器模式的目的在於將一個類別的介面轉換成客戶希望的另外一個介面,Adapter使得原本由於介面相容而不能一起工作的那些類別可以一起工作。如出國玩需要插座轉接頭。

橋接模式 | Bridge Pattern

橋接模式是將抽象部分與實現部分分離,使它們都可以獨立的變化。即用合成關係代替繼承關係。如同合成/聚合複用原則。

组合模式 | Composite Pattern

組合模式就是將元件做分離,依照需求一一組裝起來,建立不同需求的物件。

裝飾者模式 | Decorator Pattern

裝飾模式動態將責任附加在物件上,若要擴展功能上,裝飾者提供比繼承更有彈性的替代方案。

外觀模式 | Facade Pattern

為子系統中的一組接口提供一個統一的高層接口,使得子系統更容易使用。

享元模式 | Flyweight Pattern

藉由共享來實現重用大量细粒度,減少需要建立的物件數量、避免大量類似物件的創建,進而提高資源使用率。

代理模式 | Proxy Pattern

爲其他物件提供一種代理以控制對這個物件的訪問。

行為型模式:類別與物件之間如何分職責以及合作完成單一物件無法獨立完成的任務。


責任鏈模式 | Chain Of Responsibility Pattern

將多個物件連成一條鏈,沿著這條鏈傳遞至每一個物件並處理請求。

命令模式 | Command Pattern

請求以命令的形式封裝在物件中,並傳給調用對象。調用對象尋找可處理該命令的適合對象,並將命令傳給合適的對象執行。

迭代器模式 | Iterator Pattern

提供一種方法可以順序性讀取一個集合物件中的各個元素,而又不會暴露該物件的內部表示。

中介者模式 | Mediator Pattern

定義一個 Mediator 物件用來封裝一組物件的互動方式。Mediator 藉由避免物件間相互直接的引用,從而降低它們之間的耦合程度,並且可以讓我們獨立地改變這些物件間的互動方式。

狀態模式 | State Pattern

有狀態的物件,把複雜的邏輯判斷分配到不同的狀態物件中,允許狀態物件在其內部狀態發生改變時改變行為。

備忘錄模式 | Memento Pattern

在不破壞封裝的前提下,儲存一個物件的某個狀態,以便於需要的時候將物件恢復到原先儲存的狀態。

觀察者模式 | Observer Pattern

多個物件之間存在著一對多的依賴關係,當一個物件發生改變時,所有跟他有關的物件都會被通知且更新。

上一篇
[Day29] 策略模式 | Strategy Pattern
系列文
從生活中認識Design Pattern30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言