---
# System prepended metadata

title: Factory Pattern
tags: [Design Pattern]

---

Factory Pattern
============================
###### tags: `Design Pattern`
ref:
[工厂模式（factory Method）的本质是什么？为什么引入工厂模式？](https://www.zhihu.com/question/42975862/answer/1239305317)
[工厂模式理解了没有？](https://zhuanlan.zhihu.com/p/37095996)


Q&A :
* 如果是解決 new 的話，那麼工廠與 Builder Pattern 有什麼差別呢？

* DDD 中考慮使用工廠的主要動機
    ```將創建複雜對象和聚合的職責分配給一個單獨的對象，該對象本身並不承擔領域中的職責，但是依然是領域設計的一部分。工廠應該提供一個創建對象的接口，該接口封裝了所有創建對象複雜操作過程，同時，它並不需要客戶去引用那個實例被創建的對象。對於聚合來說，我們應該一次性地創建整個聚合，並確保它的不變條件得到滿足。```
    ```By Eric Evans ```
* DDD中使用工廠模式的參考資料
    [DDD 戰術設計：工廠模式](https://ithelp.ithome.com.tw/m/articles/10224777)
    [DDD Factory](https://speakerdeck.com/jame2408/ddd-tw-7th-dao-du-ch11-factory?slide=5)
    [ddd的战术篇: Factory和Specification](https://blog.csdn.net/abchywabc/article/details/79778220)