當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。
主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。
**
#include
using namespace std;
class light;
class state;
class light
void pressswitch()
void setstate(state *s)
private:
state *state;
};class offstate:public state;
class onstate:public state
};void offstate::pressswitch(light * light)
使用
int main()
結果
pressswitch to
onpressswitch to off
設計模式(十八) 狀態變化模式 memento
狀態變化模式包括 state和memento 備忘錄 在元件構建過程中,某些物件的狀態經常面臨變化,如何對這些變化進行有效的管理,又同事維持高層模組的穩定?軟體構建過程中,某些物件狀態轉換過程中,如果想回溯到之前的狀態,又不想暴露實現細節。乙個程式有在每個時候擁有的序列號都是不同的,代表他這個時候的...
十八 狀態模式
狀態模式 state 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判定邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的判斷邏輯簡化。demo 維護乙個concretestate子類的例項,定...
學習設計模式 狀態模式
說明 定義 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。該模式適用於那些複雜的條件不一樣,執行不一樣的場景,當然簡單的情況,直接用if else處理就可以了。需求 員工加班,不同的時間,寫程式的效率不一樣。解決方式 a.定義乙個狀態抽象類並定義乙個處理方法 b.根據不同狀...