雖然對同一主題有很多問題,但他們都沒有完全清除我的困惑。所以我試圖用兩種模式來舉一個例子和它的解決方案。策略模式與狀態模式之間的區別使用示例
請告訴我,如果我做得正確或我做了什麼錯。
類:
- BeforeCondition:定義的電壓電平,燃料量,肩帶條件
- 貝克:其中烘烤餅乾
- LowSpeedBaker,HighSpeedBaker,MediumSpeedBaker機器:各種Baker的實現或者說狀態。
- BakerStateFactory:它接受BeforeCondtion並返回其中一個Baker狀態。
實現1:
客戶端創建BeforeCondition和BakerStateFactory得到適當的麪包師。現在它叫麪包師烘烤()。
實現2:
客戶端沒有理會機是如何工作的。它只是將BeforeCondition傳遞給Baker機器。貝克機器本身在BeforeCondition的基礎上決定其狀態。
結論
首先實現讓客戶決定的狀態或具有被注入什麼樣的實現。它不會打擾機器是否可以在這種情況下工作。這是戰略模式。
在第二個實現中,機器自己可以決定其狀態並相應地工作。如果需要的話,它也可以自由地改變流程之間的狀態。這是狀態模式。
我會回答這個問題:我的項目中定義了什麼?如果你不知道,你不能真正決定哪種模式更好。我們爲客戶創建軟件來解決他們的問題,所以我們需要知道問題實際上是什麼:) – 2013-05-12 10:22:38
我不想比較哪種模式更好或套件適合這種情況。但試圖通過它們的實現來理解兩者之間的區別。 – 2013-05-12 10:29:00
所以我認爲你已經很好地回答了你的問題。在你的情況下,策略給予班級用戶更多的控制權,在這種狀態下,你的班級給予更多的自我控制。 – 2013-05-12 10:45:24