設計模式之十二 狀態模式 State

2021-09-07 05:18:25 字數 933 閱讀 9160

狀態模式:

當乙個物件的內部狀態發生變化時同意改變它的行為。

狀態模式將依賴於狀態的行為分離成了各種狀態類,每一種特定的轉態類僅僅處理單一的行為。而且定義了各種狀態之間的轉移變遷關係。

uml圖:

主要包括:

context:定義了client須要的介面,操作了乙個當前狀態類的引用

state:抽象的狀態類。為繼承的類定義了乙個依賴於當前狀態的介面。

c++**例如以下:

#include

#include

#include

class context;

class state;

class context

void request()

private:

state * state;

};class concretestatea:public state

;//注意這裡concretestatea和concretestateb之間相互包括。所以須要將handle方法寫在類外面。

class concretestateb:public state

;void concretestatea::handle(context * c)

void concretestateb::handle(context * c)

int main()

執行結果例如以下:

詳細使用時能夠在context中新增乙個成員變數。依據這個成員變數的值在詳細的state類之間推斷轉移關係。

設計模式(十二 狀態模式

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

《十二》讀《大話設計模式》之狀態模式

對於狀態模式,大話設計模式 是以人從上班到下班到加班的狀態來展開講述的。狀態模式其實就是某乙個物件在某個過程或者時間的乙個狀態記錄,但是這個狀態的順序不能發生變化,在程式設計方面可能要比其他模式稍微複雜點,請待我慢慢將來。本人喜歡用 來形象的講述原理,可能是因為對單純的看些理論的書有些反感或者無趣吧...

設計模式 十二 狀態模式 C

狀態模式 狀態模式允許乙個物件在其內部狀態改變的時候改變行為。在狀態模式 state pattern 中,類的行為是基於它的狀態改變的。這種型別的設計模式屬於行為型模式。設計的時候把狀態物件和目標物件分離。目標物件執行行為的時候,把目標物件傳遞給狀態物件a,如果滿足狀態a的條件,執行狀態a的方法,不...