行為型模型 狀態模式

2021-09-07 15:37:01 字數 1096 閱讀 6780

context:使用者物件

擁有乙個state型別的成員,以標識物件的當前狀態;

state:介面或基類

封裝與context的特定狀態相關的行為;

concretestate:介面實現類或子類

實現了乙個與context某個狀態相關的行為。

適用於:

物件的行為,依賴於它所處的當前狀態。行為隨狀態改變而改變的場景。

/*

* * 行為型模型 狀態模式

* state模式也叫狀態模式,是行為設計模式的一種。

* state模式允許通過改變物件的內部狀態而改變物件的行為,這個物件表現得就好像修改了它的類一樣。

* 狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉譯到表現不同狀態的一系列類當中,可以把複雜的判斷邏輯簡化。 *

*/#define _crt_secure_no_warnings#include

#include

//前置宣告

class

context;

class

state

};class

context

void setstate(state *state)

state *getstate()

void

doaction()

else

}private

: state *state;

};class startstate: public

state

else

}virtual std::string tostring() override

};class stopstate: public

state

else

}virtual std::string tostring() override

};void

mytest()

intmain()

行為型模式 狀態模式

是乙個用來對狀態轉換進行建模的工具,是乙個抽象的機器。有著兩個非常關鍵的部分,狀態和轉換。狀態是指系統當前的狀態。轉換是指從乙個狀態切換到另乙個狀態,因某乙個事件或者條件的觸發而開始。通常,在一次轉換發生之前或者之後,會執行一組動作。我們經常使用狀態圖來表示狀態機。其中,每乙個狀態是乙個節點,每一次...

行為型模式 狀態模式

在狀態模式 state pattern 中,類的行為是基於它的狀態改變的。這種型別的設計模式屬於行為型模式。在狀態模式中,我們建立表示各種狀態的物件和乙個行為隨著狀態物件改變而改變的 context 物件。意圖 允許物件在內部狀態發生改變時改變它的行為,物件看起來好像修改了它的類。主要解決 物件的行...

(行為型模式)State 狀態模式

狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式允許乙個物件在其內部狀態改變的時候改變行為。這個物件看上去像是改變了它的類一樣。狀態模式把所研究的物件的行為包裝在不同的狀態物件裡,每乙個狀態物件都屬於乙個抽象狀態類的乙個子類。狀態模式的意圖是讓乙個物件在其內...