狀態模式(state)定義:當乙個物件的內在狀態改變時,允許改變其行為,這個物件看起來像是改變了其類。
什麼是狀態:
應用程式中的部分物件可能會根據不同的情況做出不同的行為,我們把這種物件稱為有狀態的物件,而把影響物件行為的乙個或多個動態變化的屬性稱為狀態
優點:
缺點:
模式的結構
**背景:打工人從早到晚打工的精神狀態。
抽象狀態類:
public
abstract
class
state
具體狀態類:
//上午工作狀態
public
class
forenoonstate
:state
else}}
//中午工作狀態
public
class
noonstate
:state
else}}
//下午工作狀態
public
class
afternoonstate
:state
else}}
//晚上工作狀態
public
class
eveningstate
:state
else
else}}
}//睡眠狀態
public
class
sleepingstate
:state
}//下班休息狀態
public
class
reststate
:state
}
工作類(環境類):
public
class
work
private
double hour;
public
double hour //小時鐘,狀態轉換的依據
set}
private
bool finish =
false
;public
bool taskfinished //完成任務屬性,是否能下班的依據
set}
public
void
setstate
(state s)
//得到狀態
public
void
writeprogram()
}
客戶端:
變化多端的狀態模式 State Pattern
現在寫字樓越建越高,碼農上個班不但要擠個地鐵,還要擠個電梯。電梯的執行簡單有這麼幾個狀態 執行 停止 關閉 開啟,電梯想要正常的執行,就必須得遵循一定的規則,例如執行的時候不能開門,開門狀態不能執行。按照平常的邏輯,分別建立open,close,run,stop四個方法,方法裡通過switch當前的...
處理物件的多種狀態及其相互轉換 狀態模式(一)
人有悲歡離合,月有陰晴圓缺 包括人在內,很多事物都具有多種狀態,而且在不同狀態下會具有不同的行為,這些狀態在特定條件下還將發生相互轉換。就像水,它可以凝固成冰,也可以受熱蒸發後變成水蒸汽,水可以流動,冰可以雕刻,蒸汽可以擴散。我們可以用uml狀態圖來描述h2o的三種狀態,如圖1所示 圖1 h2o的三...
處理物件的多種狀態及其相互轉換 狀態模式(一)
人有悲歡離合,月有陰晴圓缺 包括人在內,很多事物都具有多種狀態,而且在不同狀態下會具有不同的行為,這些狀態在特定條件下還將發生相互轉換。就像水,它可以凝固成冰,也可以受熱蒸發後變成水蒸汽,水可以流動,冰可以雕刻,蒸汽可以擴散。我們可以用uml狀態圖來描述h2o的三種狀態,如圖1所示 圖1 h2o的三...