iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0
自我挑戰組

Design Pattern - 無所不在的設計模式系列 第 2

[Day02] Design Pattern - 設計模式的各個種類

  • 分享至 

  • xImage
  •  

設計模式的種類


今天來介紹設計模式有哪些以及分類!

目前設計模式有23種,根據他們的使用目的、複雜度、架構可以區分為三類(來自GoF的分類):

  • Creational Pattern 創建型模式
  • Structural Pattern 結構型模式
  • Behavioral Pattern 行為型模式
  1. Creational Pattern 創建型模式

用於描述如何建立物件,主要核心為把物件的建立和使用分開。

以下為創建型模式的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建造者模式
  1. Structural Pattern 結構型模式

描述了在保持原結構的彈性和效能下,如何將類別或物件透過複合(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代理模式
  1. Behavioral Pattern 行為型模式

描述物或類別之間如何溝通協作。

以下為各種行為型模式!

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架構
MVC CRUD實作-1(Node.js)
MVC CRUD實作-2
MVC CRUD實作-3


上一篇
[Day01] Design Pattern - 無所不在的設計模式
下一篇
[Day03] 先來看看MVC架構吧~
系列文
Design Pattern - 無所不在的設計模式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言