今天來介紹設計模式有哪些以及分類!
目前設計模式有23種,根據他們的使用目的、複雜度、架構可以區分為三類(來自GoF的分類):
用於描述如何建立物件,主要核心為把物件的建立和使用分開。
以下為創建型模式的5種模式,還有加上各模式的簡述!
Pattern Name 後面加上emoji🖥️代表那次的介紹有簡易的實作~
Pattern Name | 簡述 |
---|---|
Factory method🖥️ | 提供物件建立在superclass/parentclass的介面(interface),同時也讓subclass/childclass 決定實體化的類別(class)為何 [Day07] Design Pattern - Factory Method |
Abstract factory🖥️ | 提供一個封裝一系列相關或相互依賴物件的介面,而不需去指定它們具體的類別 [Day08] Design Pattern - Abstract Factory抽象工廠模式 |
Singleton 🖥️ | 限制了每一個類別的初始化,並保證一個類別裡只有一個instance可以被創建 [Day09] Design Pattern - Singleton |
Prototype | 從一個相似的Instance建立一個新的物件,再根據我們的需求調整 [Day10] Design Pattern - Prototype 原型模式 |
Builder | 一步步使用一些簡單的物件去建構一個較複雜的物件[Day11] Design Pattern - Builder建造者模式 |
描述了在保持原結構的彈性和效能下,如何將類別或物件透過複合(composition)、繼承(inheritance)的方式,建構出更大更複雜的架構。
以下為結構型模式的各種patterns~
Pattern Name | 簡述 |
---|---|
Adapter | 轉接器模式是一種結構型模式,它使介面不相容的類別能夠一起工作,就像兩個不相容物件的橋梁一樣。[Day12] Design Pattern - Adapter轉接器模式 |
Bridge 🖥️ | 橋接模式是一種結構式模式,它允許你將一個大型類別或一組密切相關的類別分為兩個獨立的層次結構——抽象層和實作層,這兩者可以獨立地進行開發而互不影響。[Day13] Design Pattern - Bridge橋接模式 |
Composite 🖥️ | Composite(組合模式)是一種結構型設計模式,它允許你將物件組合成樹狀結構,然後以結構的方式處理它們,就好像它們是個別的物件一樣。 [Day14] Design Pattern - Composite組合模式 |
Decorator 🖥️ | Decorator(裝飾者模式)是一種結構型設計模式,它允許你通過將物件放置在包含特定行為的特殊包裝物件中,來附加新的行為到這些物件上。 [Day15] Design Pattern - Decorator裝飾者模式 |
Facade 🖥️ | 外觀模式是一種結構型設計模式,它提供了一個簡化的介面給一個library、框架或任何其他複雜的類別集合。 [Day16] Design Pattern - Facade 外觀模式 |
Flyweight 🖥️ | 享元模式是一種結構型設計模式, 它讓你在有限的記憶體內,透過共享多個物件所擁有的共同狀態,來載入更多物件;而不是在每個物件中保存所有資料。[Day17] Design Pattern - Flyweight 享元模式 |
Proxy | 代理模式是一種結構型設計模式,它允許你為另一個物件提供一個substitute或是placeholder。Proxy是用來控制對原始物件的訪問,並允許你在把請求傳遞到原始物件之前或之後執行某些操作或處理。[Day18] Design Pattern - Proxy代理模式 |
描述物或類別之間如何溝通協作。
以下為各種行為型模式!
Pattern Name | 簡述 |
---|---|
Chain of Responsibility 🖥️ | 責任鏈(Chain of Responsibility)是一種行為型設計模式,它允許你將請求依次傳遞給一系列處理者。在收到請求後,每個處理者決定是處理該請求還是將其傳遞給鏈中的下一個處理者。[Day19] Design Pattern - Chain of Responsibility 責任鏈模式 |
Command | 命令模式是一種行為型模式,它可以將一個請求轉換成一個擁有包含請求資訊的獨立物件。這種轉換使你能夠將請求作為方法引數傳遞,延遲或佇列請求的執行,並實現可撤銷的操作。 [Day20] Design Pattern - Command命令模式 |
Interpreter | Interpreter模式是一種行為型設計模式,它用於處理解釋和解析語言或表達式的需求。它的主要目的是將一個語言或表達式解釋成可執行的操作或行為。這種模式通常在編譯器、計算機語言解釋器、數學公式解析器等情境下使用。 [Day21] Design Pattern - Interpreter解釋器模式 |
Iterator | 迭代器模式是一種行為型設計模式,它能讓你在不暴露其集合的底層表現形式(清單、堆疊、樹等)的情況下,走訪集合中的各個元素。 [Day22] Design Pattern - Iterator 迭代器模式 |
Mediator | 中介者模式是一種行為型設計模式,能讓你減少物件和物件之間混亂的相依性。這個模式限制了物件之間的直接溝通,強制讓它們透過一個中介者物件來合作。 [Day23] Design Pattern - Mediator中介者模式 |
Memento 🖥️ | 備忘錄模式是一種行為型設計模式,它允許你在不揭露實作的細節的情況下,儲存且恢復物件德原始狀態。 [Day24] Design Pattern - Memento備忘錄模式 |
Observer 🖥️ | 觀察者模式是一種行為型設計模式,它允許你定義一種訂閱的機制,以通知多個物件有關它們正在觀察的物件 的任何事件。 [Day25] Design Pattern - Observer觀察者模式 |
State | 狀態模式是一種行為型設模式,它允許物件在內部狀態改變時改變自身的行為。使其看起來就像改變了它的所屬類別。 [Day26] Design Pattern - State狀態模式 |
Strategy 🖥️ | 策略模式是一種行為型設計模式,它允許你定義一系列的演算法,將每個演算法放入獨立的類別中,並使它們的物件可以相互替換。 [Day27] Design Pattern - Strategy 策略模式 |
Template method | 模板方法模式是一種行為型設計模式,它在父類別定義了一種演算法的骨架,允許子類別在不修改結構的情況下覆寫特定步驟。 [Day28] Design Pattern - Template method模板方法模式 |
Visitor | 訪問者模式是一種行為型設計模式,它允許你將演算法從它們作用的物件中分離出來。 [Day29] Design Pattern - Visitor訪問者模式 |
除了上述三種分類以外,我還想另外介紹一種設計模式~
也就是MVC。連結如下~
MVC架構
MVC CRUD實作-1(Node.js)
MVC CRUD實作-2
MVC CRUD實作-3