當我仔細觀察策略和工廠設計模式時,它幾乎看起來很相似。 我們可以用這些模式中的任何一種來實現解決方案。 然後我想知道什麼時候該用什麼。策略和工廠設計模式有什麼區別?
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. 工廠方法設計模式中的工廠設計模式與目標c中的抽象工廠有什麼區別?
- 8. 模式策略,訪問者和模板方法有什麼區別?
- 9. 策略設計模式
- 10. Multipe策略設計模式
- 11. DI與工廠模式有什麼區別?
- 12. 模擬,存根和工廠女孩有什麼區別?
- 13. 界面和設計模式有什麼區別?
- 14. 設計模式和庫之間有什麼區別?
- 15. Spring singleton和Java singeleton(設計模式)有什麼區別?
- 16. Facade和Gateway設計模式有什麼區別?
- 17. 設計和建築模式有什麼區別
- 18. 新的設計模式/設計策略
- 19. 模板方法和策略設計模式之間有什麼相似之處
- 20. 設計模式 - 策略模式
- 21. 策略模式與工廠類別單元測試
- 22. Passportjs中本地基本策略和摘要策略之間有什麼區別
- 23. Dispatcher視圖和服務與工作設計模式有什麼區別?
- 24. 工廠模式設計
- 25. iOS工廠設計模式
- 26. 價值迭代和策略迭代有什麼區別?
- 27. 遺傳算法和進化策略有什麼區別?
- 28. 在hapi.js認證方案和策略之間有什麼區別?
- 29. 使用工廠和戰略設計模式
- 30. PHP設計模式工廠,倉庫和...?
[提問]的複製(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