狀態模式(state):當乙個物件的內在狀態改變時,允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要用在:當控制乙個物件狀態變換的條件表示式過於複雜的情況,把狀態的判斷邏輯轉移到表示不同狀態的一系列類中,就可以把複雜的判斷邏輯簡化。
例子:乙個員工在一天中根據時間不同或工作完成情況會有不同的狀態,如果把這些狀態全部寫在乙個類中,判斷邏輯會很複雜。
//抽象狀態類
class state
};//工作類
class work
void sethours(int hours)
int gethours()
void setstate(state *state)
void dowork()
};//具體狀態:睡覺狀態
class sleepstate: public state
};//休息狀態
class reststate :public state
else
}};//工作狀態
class jobstate :public state
else
}};int main()
這樣寫出來,感覺和職責鏈模式有點像。。。但是狀態模式可以在不同情況下進入不同的狀態,而職責鏈模式一般只有乙個上級,相當於只有一條鏈,狀態模式可以有多條。
設計模式 狀態模式
狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...
設計模式 狀態模式
1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...
設計模式 狀態模式
描述 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。通常應用在有好多狀態的流程中。類圖 以下程式模擬糖果機器投幣取糖果的狀態流程。1.定義狀態...