小A:“怎樣去比較狀態模式和策略模式?”
大B:“在狀態模式中,狀態的變遷是由對象的內部條件決定,外界只需關心其接口,不必關心其狀態對象的創建和轉化;而策略模式裡,採取何種策略由外部條件(C)決定。Strategy模式與State模式的結構形式幾乎完全一樣。但它們的應用場景(目的)卻不一樣,State模式重在強調對象內部狀態的變化改變對象的行爲,Strategy模式重在外部對策略的選擇,策略的選擇由外部條件決定,也就是說算法的動態的切換。但由於它們的結構是如此的相似,可以認爲狀態模式是完全封裝且自修改的策略模式。”
小A:“公認的事實:策略和狀態模式是孿生兄弟。”
大B:“就像你所知道的,策略模式通過可互換的算法規則來創建非常成功的業務模式。不管怎麼樣,狀態以非常高尚的方式幫助對象學習通過他們內部的狀態來控制他們的行爲。他總是無意中告訴他的對象客戶,‘跟着我重複就行了,我足夠好,我足夠聰明……’”