狀態模式 打工人一天的狀態變化

2021-10-12 01:35:25 字數 1564 閱讀 8162

狀態模式(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的三...