2012-05-08 197 views
3

我讀通過這個link約狀態模式。它看起來像策略模式嗎?這兩種模式之間的確切區別是什麼?戰略設計模式VS狀態設計模式

+1

http://dofactory.com/Patterns/Patterns.aspx – MilkyWayJoe

+0

[Strategy Design pattern和State Design pattern之間的區別是什麼?](http://stackoverflow.com/questions/1658192/what-是策略設計模式和狀態設計模式之間的差異) – Thor

+0

我對這兩種模式有了一個好主意。謝謝你的回答 – Krishna

回答

3

現狀與對策之間的差別是在意向。通過策略,算法的選擇相當穩定。隨着狀態的發生,「上下文」對象狀態的改變使得它從它的「調色板」中選擇策略對象。

http://sourcemaking.com/design_patterns/state

1

策略模式是非常相似的狀態模式。 區別之一在於Context包含作爲實例變量的狀態並且可以有多個任務,其實現可以依賴於狀態 ,而在策略模式策略中作爲參數 傳遞給方法並且上下文對象沒有任何變量來存儲 它。

詳細內容見Strategy design pattern in java example tutorial

+1

謝謝你的回答 – Krishna

+0

歡迎您;) – Nomade

0

我認爲一個主要的區別是:

-In 國家模式,我們通過上下文本身作爲參數傳遞給國傢俱體類的方法我們需要分配給上下文,它做兩件事:首先它將自己分配給發送的上下文,其次,它執行它的角色。

-In 策略模式,當我們第一次創建它時,我們將策略傳遞給上下文,所以它仍然像整個程序一樣,除非我們將同一變量分配給新的上下文(指針)內存使用「新」併爲其分配新策略,過了一段時間垃圾收集器將使用其分配的策略消除舊的上下文。

更清楚地說,策略對於一個上下文是固定的,一旦分配它就不能改變,即使上下文沒有策略設置器。但是對於狀態,許多狀態可以一個接一個地分配給相同的上下文,因爲上下文具有狀態的setter。

我希望它是有用的。

0

在一種狀態模式中,通常狀態的動作引起狀態的變化;在戰略模式中,戰略的行動不會導致戰略的改變。換句話說,國家的變化在於國家本身;戰略轉變在於外部條件。