設計模式是什麼
網路上已經有許多關於設計模式的解釋了,在此直接引述維基百科的說法:
在軟體工程中,設計模式(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 環境安裝>
如果對於我的文章或程式碼有任何問題,歡迎在下方留言指教。
若有幫助到你,也歡迎給文章拍手一下,讓我在寫文章的路上更加進步!