意圖:
允許乙個物件在其內部狀態改變時改變它的行為。物件看起來似乎修改了它的類。
結構圖:來自 《23種設計模式 - 郗曉勇》
實現:context
namespace ns_state
virtual ~context() {}
void request(void);
private:
friend class state;
void changestate(state *state);
private:
state *_state;
};} /* namespace ns_state */
#include "context.h"
#include "state.h"
namespace ns_state
void context::changestate(state *state)
} /* namespace ns_state */
state
#include "context.h"
namespace ns_state
virtual ~state() {}
virtual void handle(context *context) = 0;
protected:
void changestate(context *context, state *state) };
} /* namespace ns_state */
concretestatea
#include "state.h"
#include "concretestateb.h"
#include namespace ns_state
virtual ~concretestatea() {}
virtual void handle(context *context) };
} /* namespace ns_state */
concretestateb
#include "state.h"
#include namespace ns_state
virtual ~concretestateb() {}
static concretestateb *getinstance(void)
virtual void handle(context *context) };
} /* namespace ns_state */
main
#include "state/context.h"
#include "state/concretestatea.h"
#include "state/concretestateb.h"
using namespace ns_state;
int main(void)
附加: 設計模式學習筆記 狀態模式(State)
四 與策略模式的區別 學而不思則罔,思而不學則殆。孔子 狀態模式是設計模式中行為型模式的一種。乙個物件在它的狀態改變時,它的行為也隨之改變,看起來好像改變了其類。假如 有三種狀態 通話中 待機中 已關機。四種行為 打 掛 開機 關機。那麼在不同的狀態下這四種行為的表現方式肯定不同。例如關機狀態下不能...
設計模式 狀態模式(State)
核心思想就是 當物件的狀態改變時,同時改變其行為。所以,狀態模式就兩點 1 可以通過改變狀態來獲得不同的行為。2 你的好友能同時看到你的變化。state類是個狀態類 這裡用dispenserstate 及實現類 public inte ce dispenserstate public class f...
設計模式 狀態模式(State)
一 狀態模式 state 定義 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類 理解 狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的判斷邏輯簡化。二 狀態模式uml圖 3 context ...