如果你看起來都處理多個對象,那麼爲什麼我們有兩種模式的一件事?他們之間有什麼不同?我看過他們四人幫的書。策略模式就像Factory?
回答
如果你已經學習了GoF書,然後研究創造和操作模式的差異。另見What is the difference between Factory and Strategy patterns?
雖然這可能在理論上回答這個問題,[這將是更可取的](http://meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供鏈接供參考。 –
感謝khunshan和Jan Dvorak。我已經瞭解了它們之間的差異,我正在深入研究它。更多的贖回將受到歡迎。 – user2925225
我很驚訝這個問題經常出現,因爲工廠和策略完全在兩個不同的類別。工廠是創造性的;戰略運作。我不需要進一步解釋,因爲Stack Overflow傳說@tvanfosson在這件事上創造了這個出色的post。
還要記住,兩者可以同時共存。你可能有一個工廠生產可以注入課堂的策略。
更有趣的問題是戰略與Template Method之間的差異,兩種類似的模式在一個重要方面有所不同。對於繼承和委派的整個討論來說,這對於OO開發人員來說是非常好的事情。
僅僅通過查看代碼或分類就無法理解其差異。要正確掌握GoF模式,請查找他們的意圖:
策略:「定義一系列算法,封裝每個算法,並使它們可以互換。策略使算法獨立於使用它的客戶端。工廠方法:「定義一個創建對象的接口,但讓子類決定實例化哪個類。Factory方法讓類將實例化推遲到子類。」
下面是關於他們的解釋:的Difference between Factory Method and Strategy design patterns
- 1. 策略模式
- 2. 在策略模式中設置策略
- 3. 默認策略。策略模式C#
- 4. 策略模式C++
- 5. Solr模式策略
- 6. 策略模式:耦合策略與非耦合策略
- 7. 模板策略模式
- 8. 策略模式的變化
- 9. ColdFusion實施策略模式
- 10. 策略設計模式
- 11. Multipe策略設計模式
- 12. 運行時策略模式?
- 13. Java策略模式 - 作爲
- 14. 瞭解策略模式
- 15. javadoc中的策略模式
- 16. DI,Guice和策略模式
- 17. 策略和享元模式
- 18. 遞歸策略模式
- 19. 策略模式問題 - PHP
- 20. Apacheds密碼模式策略
- 21. 設計模式 - 策略模式
- 22. 具有默認策略的策略模式
- 23. 策略模式和策略中的方法數量接口
- 24. 具有虛擬混淆策略的策略模式
- 25. 在phantomjs中使用策略模式
- 26. 策略模式允許狀態嗎?
- 27. 策略模式中的變化參數
- 28. 策略模式和接口變量
- 29. 策略模式:實例還是Object.class?
- 30. 如何實施策略設計模式?
可能重複[?廠和戰略模式之間的區別是什麼(http://stackoverflow.com/questions/616796/what-is-the-difference工廠和戰略之間的模式) – wheaties
我不想強調這一點。一個面向對象的語言,特別是Java只有當你實現一個模式時可以使用這麼多的構造 - 你不能真正地離開他們在代碼中的外觀(它們必然會有重疊),以及它們是什麼'用於。 (這不是「處理多個對象」)。另一方面,你有語言功能編程功能,其中許多這些模式[變得不可見](http://norvig.com/design-patterns/ design-patterns.pdf) - 工廠,策略和命令都可以使用lambda表達式來實現。 – millimoose