設計模式(Design Patterns)

Huashen
Mar 21, 2021

--

設計模式是什麼

網路上已經有許多關於設計模式的解釋了,在此直接引述維基百科的說法:

在軟體工程中,設計模式(design pattern)是對軟體設計中普遍存在(反覆出現)的各種問題,所提出的解決方案。

設計模式可以說是一種軟體設計的心法,不僅能夠提升自己程式碼的可讀性、維護性、擴充性,更可以讓我們避開許多的反模式(Anti Patterns),避免寫出雜亂無章又效率低下的程式碼。

在軟體設計的過程中,利用第三方套件加速開發是再正常不過的事情,有時我們需要更徹底了解套件,甚至為開源套件提出貢獻時,我們就必須閱讀該套件的原始碼,而在深入這些套件之後,往往都能看到設計模式的影子,這不僅能讓我們更好了解套件的架構,也代表著設計模式對於維護的重要性。

設計模式的分類

目前設計模式,主要是以GoF(Gang of Four)提出的23種設計模式最為知名,其中又可按照目的性的不同而分為三大類:

1.建立型模式(Creational Patterns)

跟建立物件有關的模式,歸類為建立型模式

  • 抽象工廠模式 (Abstract Factory pattern)
  • 構造器模式 (Builder pattern)
  • 工廠方法模式 (Factory Method pattern)
  • 原型模式 (Prototype pattern)
  • 單例模式 (Singleton pattern)

2.結構型模式(Structural Patterns)

跟將物件組合成更大的結構有關的模式,歸類為結構型模式

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

3.行為型模式(Behavioral Patterns)

跟管理物件的責任與行為有關的模式,歸類為行為型模式

  • 責任鏈模式(Chain-of-responsibility pattern)
  • 命令模式(Command pattern)
  • 翻譯器模式(Interpreter pattern)
  • 疊代器模式(Iterator pattern)
  • 中介者模式(Mediator pattern)
  • 回憶模式(Memento pattern)
  • 觀察者模式(Observer pattern)
  • 狀態模式(State pattern)
  • 策略模式(Strategy pattern)
  • 模板方法模式(Template method pattern)
  • 參觀者模式(Visitor pattern)

以上就是GoF提出的23種設計模式,我們將在未來的日子裡一一介紹他們。

順帶一提,由於設計模式的大多數應用情況都是配合物件導向程式設計(Object-oriented programming, 簡稱 OOP),因此我會採用TypeScript來當作範例程式語言。雖然TypeScript不是像Java 或是 C#這類非常強調物件導向設計的語言,但由於工作關係較熟悉Node.js開發環境,因此還是選擇TypeScript來撰寫範例程式。

下一篇文章 <Node.js & TypeScript 環境安裝>

如果對於我的文章或程式碼有任何問題,歡迎在下方留言指教。

若有幫助到你,也歡迎給文章拍手一下,讓我在寫文章的路上更加進步!

--

--

Huashen

嗨,我是Huashen,一位軟體工程師,這裡會記錄我的程式設計心得與筆記。