設計模式 十二 狀態模式 C

2021-10-02 11:04:33 字數 802 閱讀 5219

狀態模式:狀態模式允許乙個物件在其內部狀態改變的時候改變行為。

在狀態模式(state pattern)中,類的行為是基於它的狀態改變的。這種型別的設計模式屬於行為型模式。

設計的時候把狀態物件和目標物件分離。目標物件執行行為的時候,把目標物件傳遞給狀態物件a,如果滿足狀態a的條件,執行狀態a的方法,不滿足狀態物件a,把目標物件傳遞給狀態物件b,如果滿足狀態b的條件,執行狀態b的方法,以此類推

#include using namespace std;

class worker;

class state

;class worker

void sethour(int hour) //改變狀態 7

state* getcurrentstate()

void setcurrentstate(state* state)

void dosomething()

private:

int m_hour;

state *m_currstate; //物件的當前狀態

};class state1 : public state

;class state2 : public state

;void state1::dosomething(worker *w)

else }

void state2::dosomething(worker *w)

else }

worker::worker()

void main()

設計模式(十二 狀態模式

狀態模式,當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。1.如下 using system namespace state using system namespace state else using system namespace state else using s...

設計模式C 實現十二 狀態模式

狀態模式 state 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式國語複雜時的情況。把狀態的判斷邏輯轉移到不同狀態的一系列類中,可以把複雜的判斷邏輯簡化。例如本文的例子,只要我們把時間輸入,就可以根據時間判斷使用哪個狀...

設計模式實現(十二) 狀態模式 State

狀態模式 state 當乙個物件的內在狀態改變時,允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜的情況 也就是if過於多的情況 把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的判斷邏輯簡化。當然,如果這個狀態判斷很簡單,那麼...