C 設計模式之狀態模式的使用

2021-07-01 22:09:07 字數 1486 閱讀 5520

(state pattern)是設計模式的一種,屬於行為模式。

(源於design pattern):當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。

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

允許乙個物件在其內部狀態改變時改變它的行為

1.乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行為。

2.乙個操作中含有龐大的多分支結構,並且這些分支決定於物件的狀態。

狀態模式uml類圖

以下為c++**實現:

標頭檔案

#ifndef __state_h__

#define __state_h__

#include

"context.h"

#include

class context;

class basestate ;

class concretestatea : public basestate ;

class concretestateb : public basestate ;

#endif

原始檔#include

"state.h"

void concretestatea::handle(context* context)

void concretestateb::handle(context* context)

標頭檔案

#ifndef __context_h__

#define __context_h__

#include "state.h"

#include

class basestate;

class context ;

#endif

原始檔#include "context.h"

context::context(basestate* state)

context::~context()

void context::setstate(basestate* state)

basestate* context::getstate()

void context::request()

應用**

#include

"state.h"

#include

"context.h"

#include

int main()

結果如下所示:

當前狀態是:a

當前狀態是:b

當前狀態是:a

當前狀態是:b

C 設計模式之狀態模式

狀態模式,當乙個物件的內在狀態改變時,語序改變其行為,這個物件看起來像是改變了其類 include using namespace std class state class forenoon class noon class afternonn class evening class gohome...

(C )設計模式之狀態模式

1.狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起像是改變了其類。狀態模式主要解決的是當控制乙個物件的狀態轉換的條件表示式過於複雜時,可以將狀態的判斷邏輯轉移到表示不同狀態的一系列類中,將複雜的判斷邏輯簡化。將特定與狀態相關的行為區域性化,並且將不同狀態的行為分割開來。當乙個物件的...

c 設計模式之狀態模式

狀態模式思想 定義乙個狀態類,裡面可以實現多種狀態的轉換,每個狀態由乙個單獨類來判斷和實現,物件裡有設定更新狀態的方法,獲得當前狀態的方法來跳轉到其他狀態類的方法中 因為setstate的時候把state的狀態變為另乙個子類,然後呼叫子類自己的判斷方法,滿足條件,則用new乙個新狀態代替原來狀態來跳...