先上圖: 本質上講,策略模式和狀態模式做得是同一件事:去耦合。怎么去耦合?就是把干什么(語境類)和怎么干(策略接口)分開,互不依賴。打個比方,下面是我一天的行程: 但問題來了,啪啪啪是個技術活,有著名的48式,今天到底要用哪一式呢?於是我的代碼變成了這樣: 但代碼如果是這樣的,寶寶 ...
在閻宏博士的 JAVA與模式 一書中開頭是這樣描述狀態 State 模式的: 狀態模式,又稱狀態對象模式 Pattern of Objects for States ,狀態模式是對象的行為模式。 狀態模式允許一個對象在其內部狀態改變的時候改變其行為。這個對象看上去就像是改變了它的類一樣。 狀態模式的結構 用一句話來表述,狀態模式把所研究的對象的行為包裝在不同的狀態對象里,每一個狀態對象都屬於一個抽 ...
2012-06-08 09:36 20 64231 推薦指數:
先上圖: 本質上講,策略模式和狀態模式做得是同一件事:去耦合。怎么去耦合?就是把干什么(語境類)和怎么干(策略接口)分開,互不依賴。打個比方,下面是我一天的行程: 但問題來了,啪啪啪是個技術活,有著名的48式,今天到底要用哪一式呢?於是我的代碼變成了這樣: 但代碼如果是這樣的,寶寶 ...
狀態模式(State)的定義 定義對象間的一種一對多的依賴關系,當一個對象的狀態(對象內部的屬性,可以理解成是對象的某個字段或者方法)發生改變時,所有依賴於它的對象都得到通知並被自動更新。允許一個對象在其內部狀態改變時改變它的行為。對象看起來似乎修改了它的類 狀態模式(State)適用性 ...
狀態模式: 根據狀態決定動作 當動作一定但是狀態可擴展適合使用狀態模式 當動作變化不適合 當狀態不會擴展也沒有必要使用使用傳統的switch即可。 先看一個沒有使用狀態模式的例子: 使用狀態模式之后代碼如下: 寫到這里當我女朋友添加一種新 ...
狀態模式允許對象在內部狀態改變時改變它的行為,對象看起來好像修改了他的類。適用場景:一個對象的行為取決於他的狀態,並且它必須在運行時根據狀態改變它的行為;一個操作中含有龐大的多分支結構,並且這些分支決定於對象的狀態。類圖: 模式的組成:環境類Context: 定義客戶感興趣的接口。維護一個 ...
聲明:轉載請說明來源:http://www.cnblogs.com/pony1223/p/7518226.html 一、引出狀態模式 假設我們現在有一個糖果機項目,那么我們知道正常一般糖果機提供給用戶的行為有這么幾種:投入硬幣、轉動曲柄、退出硬幣幾種行為;那么糖果機呢一般有這幾中狀態,待機 ...
在實際的軟件開發中,狀態模式不是很常用,但在一些能夠用到的場景里,能發揮非常大的作用。 狀態模式一般用於實現狀態機,而狀態機一般用在游戲、工作流引擎等軟件開發中。 狀態機有三個組成部分:狀態、事件和動作。觸發某個事件可以改變對象的狀態。 以超級馬里奧這個小游戲為例,一進入游戲是個小馬 ...
JAVA設計模式:狀態模式 轉載:http://www.cnblogs.com/pony1223/p/7518226.html 一、引出狀態模式 假設 ...
概念: State模式也叫狀態模式,是行為設計模式的一種。State模式允許通過改變對象的內部狀態而改變對象的行為,這個對象表現得就好像修改了它的類一樣。 根據這個概念,我們舉個例子 結果: 可以看到,根據time屬性的不同,對象的行為 ...