//狀態模式,當乙個物件的內在狀態改變時,語序改變其行為,這個物件看起來像是改變了其類
#include
using namespace std;
class state;
class forenoon;
class noon;
class afternonn;
class evening;
class gohome;
class work;
class state
;class work
void workprogram()
};class forenoon :public state
;class noon :public state
;class afternoon :public state
;class evening :public state
;class gohome :public state
};work::work()
void forenoon::writeprogram(work* w)
else
}void noon::writeprogram(work* w)
else
}void afternoon::writeprogram(work* w)
else
}void evening::writeprogram(work* w)
else
}int main()
執行結果:
請按任意鍵繼續. . .
這個程式在邏輯上是不通順的,但是能表達出狀態函式的作用,基本思路是這樣的:
定義狀態介面,在狀態介面定義由於狀態轉移所產生的變化,即那個虛函式。
定義物件work,work中包含了幾個部分
引入狀態,狀態轉移的判斷條件函式,狀態轉移的操作函式。就是這個樣子
(C )設計模式之狀態模式
1.狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起像是改變了其類。狀態模式主要解決的是當控制乙個物件的狀態轉換的條件表示式過於複雜時,可以將狀態的判斷邏輯轉移到表示不同狀態的一系列類中,將複雜的判斷邏輯簡化。將特定與狀態相關的行為區域性化,並且將不同狀態的行為分割開來。當乙個物件的...
c 設計模式之狀態模式
狀態模式思想 定義乙個狀態類,裡面可以實現多種狀態的轉換,每個狀態由乙個單獨類來判斷和實現,物件裡有設定更新狀態的方法,獲得當前狀態的方法來跳轉到其他狀態類的方法中 因為setstate的時候把state的狀態變為另乙個子類,然後呼叫子類自己的判斷方法,滿足條件,則用new乙個新狀態代替原來狀態來跳...
C 設計模式之 狀態模式(State)
當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類 狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以複雜的判斷邏輯簡化。abstract class state class concretestatea...