狀態模式:當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。
當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行為時,就可以考慮使用狀態模式了。
例項**如下:
#include using namespace std;
class work;
class state
;class forenoonstate:public state
;class noonstate:public state
;class afternoonstate:public state
;class eveningstate:public state
;class work
~work()
void sethour(int hour)
int gethour(void)
void setstate(state *state)
void writeprogram() };
void forenoonstate::writeprogram(work *w)
}void noonstate::writeprogram(work *w)
}void afternoonstate::writeprogram(work *w)
}void eveningstate::writeprogram(work *w)
{ cout<
設計模式 狀態模式
1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...
設計模式 狀態模式
描述 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。通常應用在有好多狀態的流程中。類圖 以下程式模擬糖果機器投幣取糖果的狀態流程。1.定義狀態...
設計模式 狀態模式
和策略模式很像,都是把具體行為委託給其他類來完成,不同的是,在策略模式中,你要替換行為,需要指定,但是在狀態模式裡,內部自動會進行替換,你都無法察覺。怎麼做到的,context 上下文是乙個類,擁有一些內部狀態 因為它在委其他類完成任務後,會轉換上下文的狀態。概念 上下文,自己的理解,本身是乙個類,...