# Design Pattern 設計模式
---
## 參考網頁:
>https://design-patterns.readthedocs.io/zh_CN/latest/index.html
>https://dotblogs.com.tw/pin0513/series/1?qq=%E8%A8%AD%E8%A8%88%E6%A8%A1%E5%BC%8F
> [iT邦幫忙30天鐵人賽](https://ithelp.ithome.com.tw/users/20112528/ironman/2113)
> https://xyz.cinc.biz/2013/08/blog-post_16.html
> https://github.com/QianMo/Unity-Design-Pattern?fbclid=IwAR1WM26_wf-mxUr8Kvow5FshZkZlqalgP44fL0eifuv7eytMBs5ghhwVf1M
> [youtube教學(英文)](https://www.youtube.com/playlist?list=PL7rVTwUzzPyLU97SIaL-IeJ-YsQa4PTK5)
>http://corrupt003-design-pattern.blogspot.com/2017/02/blog-post.html
>http://twmht.github.io/blog/category/design-pattern.html
---
## **Creational Patterns 創建型模式**
處理物件建立的設計模式,試圖根據實際情況使用合適的方式建立物件。基本的物件建立方式可能會導致設計上的問題,或增加設計的複雜度。建立型模式通過以某種方式控制物件的建立來解決問題。
- [Prototype Pattern 原型模式](https://hackmd.mcl.math.ncu.edu.tw/O7c88356QhC1cFArYd7tDw?both)
- [Singleton Pattern 單例模式](https://hackmd.mcl.math.ncu.edu.tw/JOjD2TUmQJChJdIM7AjONA)
- [Abstract Factory Pattern 抽象工廠模式](https://hackmd.mcl.math.ncu.edu.tw/a4-wyyqOQQ6kLTzHmssVHQ)
- [Builder Pattern 建造者模式](https://hackmd.mcl.math.ncu.edu.tw/gJynB-FWSzKvthZwQB6X1w)
- [Factory Method Pattern 工廠方法模式](https://hackmd.mcl.math.ncu.edu.tw/LsqnSIQXQ_GLR4R_wXK0zg)
補充:
> https://blog.techbridge.cc/2017/05/22/factory-method-and-abstract-factory/
> 工廠方法與抽象工廠的差異
## **Structural Patterns 結構型模式**
描述如何將類或者對象结合在一起形成更大的結構,就像搭積木,可以通過簡單積木的组合形成複雜的、功能强大的結構。
結構型模式可以分為==類結構型模式==和==物件結構型模式==:
1. **類結構型模式**
關心類的組合,由多個類可以組合成一個更大的系統,在類結構型模式中一般只存在繼承關係和實現關係。
1. **物件結構型模式**
關心類與物件的組合,通過關聯關係使得在一個類中定義另一個類的實例物件,然後通過該物件調用其方法。
- [Adapter Pattern 適配器模式(轉接器模式)](https://hackmd.mcl.math.ncu.edu.tw/sX7uQg9VRGCTdT3_x3xc-w)
- [bridge Pattern 橋接模式](https://hackmd.mcl.math.ncu.edu.tw/UXkF9KkjRUGPNUADD9UcZQ)
- [Composite Pattern 組合模式](https://hackmd.mcl.math.ncu.edu.tw/Fim1XasSSpeo6a13bfCPAQ)
- [Decorator Pattern 裝飾模式](https://hackmd.mcl.math.ncu.edu.tw/ZKx1dN-QSb-WFilGvThAKw?both)
- [Facade Pattern 外觀模式(表象模式)](https://hackmd.mcl.math.ncu.edu.tw/bCCtviPjQvmcgSrMTdqjdA)
- [Flyweight Pattern 享元模式](https://hackmd.mcl.math.ncu.edu.tw/DniFWfEVQBCAHsL8ckLyqQ)
- [Proxy Pattern 代理模式](https://hackmd.mcl.math.ncu.edu.tw/8oEOsSFYRomGADqYJouS8Q)
> 七種模式之比較
> https://www.itread01.com/content/1544145064.html
## **Behavioral Patterns 行為型模式**
旨在探討物件之間的行為互動及分配,良好的行為互動,使程式的執行更有效率,物件的調度更有彈性。
- [Command Pattern 命令模式](https://hackmd.mcl.math.ncu.edu.tw/WKNBaCmoQKWodiW569T9-Q)
- [State Pattern 狀態模式](https://hackmd.mcl.math.ncu.edu.tw/EGF6UiZ5RvmuslV81bSYuA)
- [Observer Pattern 觀察者模式](https://hackmd.mcl.math.ncu.edu.tw/zM_nmb2aSvy2OTath1eDDg)
- [Chain of Responsibility Pattern 責任鏈模式](https://hackmd.mcl.math.ncu.edu.tw/TmIFh_9GRxKSMlZ853nKHQ)
- [Mediator Pattern 中介者模式(仲介者模式)](https://hackmd.mcl.math.ncu.edu.tw/eyX6WOn1THifV7-40T8mPA)
- [Interpreter Pattern 解釋器模式](https://hackmd.mcl.math.ncu.edu.tw/rdPw5VGfSL2okkaU9ZlE1A)
- [Iterator Pattern 迭代器模式](https://hackmd.mcl.math.ncu.edu.tw/3mYorTjOTwuSEqmEsuvOTw)
- [Memento Pattern 備忘錄模式](https://hackmd.mcl.math.ncu.edu.tw/c_cbmEjDQ32bDkXsZlrubA)
- [Strategy Pattern 策略模式](https://hackmd.mcl.math.ncu.edu.tw/yuA-YWAZQPyMLDfR2r0Ehw)
- [Template Method Pattern 模板方法模式(範本方法模式)](https://hackmd.mcl.math.ncu.edu.tw/jU2Hx3PfQwKXttRZz38lMg)
- [Visitor Pattern 訪問者模式](https://hackmd.mcl.math.ncu.edu.tw/pWOuFlfgQsuWH3a4Y51oaA)