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