當我仔細觀察策略和工廠設計模式時,它幾乎看起來很相似。 我們可以用這些模式中的任何一種來實現解決方案。 然後我想知道什麼時候該用什麼。策略和工廠設計模式有什麼區別?
2
A
回答
2
Abstract Factory
設計模式用於解決如下問題:
- 系統如何獨立於其對象的創建方式?
- 如何獨立更改對象的創建方式
(無需更改現有類)?
該模式的關鍵思想是抽象對象創建過程。
客戶端(需要創建對象)是指抽象 (接口)並獨立於實現 (如何創建對象/實例化哪些具體類)。
何時不使用抽象工廠: 不改變的對象創建 (當實例化的具體類從不改變時)。
的Strategy
設計模式是用來解決問題等:
- 對象支撐如何使用不同的算法
使得其中要使用的算法可以被選擇並且動態地改變?
- 算法實現的方式如何獨立更改
(無需更改現有類)?
例如,計算訂單處理系統中的價格。
要以不同方式計算價格,應該有可能支持 支持不同的定價算法 ,以便可以在運行時動態選擇和更改要使用的算法。
這種模式的主要思想是從其上下文(並將其封裝在單獨的對象中)中分離算法 (即更改)。
如需進一步討論,請參閱學習 面向對象設計&在http://w3sdesign.com編程 GoF的設計模式記憶。
+0
謝謝你的回答澄清! – OPV 2017-09-25 14:34:39
相關問題
- 1. 策略設計模式與抽象工廠模式有什麼區別?
- 2. 工廠和管道設計模式有什麼區別?
- 3. 工廠方法和抽象工廠設計模式有什麼區別?
- 4. 服務定位器和工廠設計模式有什麼區別?
- 5. 設計模式和架構模式有什麼區別?
- 6. 模式策略,訪問者和模板方法有什麼區別?
- 7. DI與工廠模式有什麼區別?
- 8. 模擬,存根和工廠女孩有什麼區別?
- 9. 界面和設計模式有什麼區別?
- 10. Facade和Gateway設計模式有什麼區別?
- 11. Spring singleton和Java singeleton(設計模式)有什麼區別?
- 12. 設計和建築模式有什麼區別
- 13. 新的設計模式/設計策略
- 14. 設計模式 - 策略模式
- 15. Dispatcher視圖和服務與工作設計模式有什麼區別?
- 16. 工廠模式設計
- 17. PHP設計模式工廠,倉庫和...?
- 18. DAO和DP模式有什麼區別?
- 19. 「::」和「sys」模式有什麼區別?
- 20. Oracle和Microsoft模式有什麼區別?
- 21. Factory和Strategy模式有什麼區別?
- 22. OOD:將工廠模式與策略模式結合使用
- 23. 在依賴注入中使用策略和工廠模式
- 24. GOF和GRASP設計模式之間的區別是什麼
- 25. 模板方法(分離)和策略模式之間的區別?
- 26. 工廠和非工廠設計模式差異
- 27. 如何實施策略設計模式?
- 28. 嵌套策略設計模式
- 29. 重新設計和逆向工程有什麼區別?
- 30. 數據設計和數據模型(ERD)有什麼區別
[提問]的複製(http://stackoverflow.com/questions/616796/what-is-the-difference-between-factory-and-strategy-patterns) – ialekseev 2015-02-06 11:23:52
感謝您的幫助 – 2015-02-06 11:26:16