有人能夠一勞永逸地向我解釋這兩者之間的區別,並試圖給出何時使用其中每一個的指導方針?例子會非常好。策略設計模式與抽象工廠模式有什麼區別?
回答
戰略是沒有一流的功能,語言的解決方法。您傳入一個策略對象,該策略對象決定您想要與其餘代碼分離的某個策略。考慮Java中的排序以及它們如何使用比較器,比較器是一個策略對象,允許您從排序算法中單獨指定排序策略。這允許您通過放棄不同的策略來重用代碼。
抽象工廠是用來創建其他對象,用抽象的部分是,你有一個工廠,返回工廠,一個實施的對象,其中的工廠訪問它通過接口的用戶。因此,一個工廠實現可以替換爲另一個工廠實現,因爲這些用戶僅取決於對象的接口。
的意向比結構和實現細節不同的其他。一旦你掌握了這個關於INTENT意義重大的基本思想,那麼你將走在正確的道路上。
Understand the role of intent in design patterns
Intent for Strategy。這是行爲模式
- 定義一系列算法,封裝每一個算法,並使它們可以互換。策略可以讓算法獨立於使用它的客戶端。
- 捕獲接口中的抽象,在派生類中隱藏實現細節。
抽象工廠的意圖。這是一個創建模式
- 提供一個接口,用於創建相關或依賴對象的族,而不指定它們的具體類。
- 一個層次封裝:許多可能的「平臺」,以及一套「產品」的構建。
好吧,那比什麼意圖/立志叫他們每個人的目標是?我警告說,startegy更接近於拾取正確的算法......但找不到依靠 – RanZilber 2011-02-07 20:46:56
工廠設計模式充當工廠,並根據您的請求在運行時生成不同種類的對象。所以控制是在運行時間,你可以在運行時決定你需要的對象。所以物體之間的耦合將會減少。
。另一方面,戰略設計模式,允許您使用採取分層結構的更好的控制「有一個」關係在「是」的關係。因爲如果我們試圖在更復雜的場景中使用繼承(是),那麼我們可能必須覆蓋繼承代世代的方法,並且它避免了代碼重用。
假設你創建了一個動物類(或接口),並且你有一個移動方法。
你希望通過擴展它來創建一個鳥類。因此,您將在move()方法下添加飛行功能。但企鵝的情況如何?他們將有步行功能。
因此,每次通過擴展Animal類創建動物時,您都必須重複移動move()方法。你可以清楚地理解move()方法更容易受到變化的影響,所以最好的做法是將變化的部分從核心代碼中分離出來。
簡單地說,我們可以創建一個單獨的層次結構來移動()方法。您可以通過setter方法將相關的move()方法分配給對象。所以控制傳遞給運行時間。下圖說明了這一事實;
以下是我的博客文章2,如果你喜歡,你可以參考他們的進一步細節。
更好。我鼓勵你在一般情況下經常關注你的博客,即使有更好的答案也要小心。這一個符合'披露'要求,但幾乎是毫無意義的絨毛。太多的答案是這樣的,你可能會被標記爲垃圾郵件。 – 2012-09-06 20:21:38
- 1. 策略和工廠設計模式有什麼區別?
- 2. 工廠方法和抽象工廠設計模式有什麼區別?
- 3. 瞭解抽象工廠設計模式中的抽象工廠設計模式
- 4. 工廠模式抽象工廠模式
- 5. 工廠方法設計模式中的工廠設計模式與目標c中的抽象工廠有什麼區別?
- 6. 抽象工廠設計模式c#
- 7. 抽象工廠設計模式 - C#
- 8. 設計模式 - 抽象工廠 - BombedMazeFactory
- 9. 工廠和管道設計模式有什麼區別?
- 10. 抽象工廠設計模式的缺點是什麼?
- 11. 抽象工廠模式
- 12. 抽象工廠模式
- 13. 抽象工廠模式
- 14. 工廠和抽象工廠模式
- 15. DI與工廠模式有什麼區別?
- 16. 與抽象工廠模式澄清後
- 17. OOD:將工廠模式與策略模式結合使用
- 18. 設計模式 - 策略模式
- 19. 策略設計模式
- 20. Multipe策略設計模式
- 21. 這是一個有效的抽象工廠設計模式嗎?
- 22. 具有默認實現的抽象工廠設計模式
- 23. 設計模式和架構模式有什麼區別?
- 24. 策略模式與工廠類別單元測試
- 25. 訪客和策略模式有什麼區別?
- 26. 服務定位器和工廠設計模式有什麼區別?
- 27. 結合泛型MVP模式與抽象工廠模式
- 28. 新的設計模式/設計策略
- 29. 工廠模式設計
- 30. iOS工廠設計模式
+1的第一句 – thepirat000 2014-08-07 05:53:17