2015-02-06 102 views
2

當我仔細觀察策略和工廠設計模式時,它幾乎看起來很相似。 我們可以用這些模式中的任何一種來實現解決方案。 然後我想知道什麼時候該用什麼。策略和工廠設計模式有什麼區別?

+0

[提問]的複製(http://stackoverflow.com/questions/616796/what-is-the-difference-between-factory-and-strategy-patterns) – ialekseev 2015-02-06 11:23:52

+0

感謝您的幫助 – 2015-02-06 11:26:16

回答

2

Abstract Factory設計模式用於解決如下問題:
- 系統如何獨立於其對象的創建方式?
- 如何獨立更改對象的創建方式
(無需更改現有類)?

該模式的關鍵思想是抽象對象創建過程。
客戶端(需要創建對象)是指抽象 (接口)並獨立於實現 (如何創建對象/實例化哪些具體類)。

何時不使用抽象工廠: 不改變的對象創建 (當實例化的具體類從不改變時)。

Strategy設計模式是用來解決問題等:
- 對象支撐如何使用不同的算法
使得其中要使用的算法可以被選擇並且動態地改變?
- 算法實現的方式如何獨立更改
(無需更改現有類)?

例如,計算訂單處理系統中的價格。
要以不同方式計算價格,應該有可能支持 支持不同的定價算法 ,以便可以在運行時動態選擇和更改要使用的算法。

這種模式的主要思想是從其上下文(並將其封裝在單獨的對象中)中分離算法 (即更改)。

如需進一步討論,請參閱學習 面向對象設計&在http://w3sdesign.com編程 GoF的設計模式記憶。

+0

謝謝你的回答澄清! – OPV 2017-09-25 14:34:39