狀態模式 StatePattern

2021-08-25 13:14:55 字數 2375 閱讀 7078

狀態介面

inte***ce istate

狀態ausing system; class askpay : istate #region istate 成員 public void do() public void undo() #endregion }

狀態busing system; class auditingfailed : istate #region istate 成員 public void do() public void undo() #endregion }

狀態cusing system; class auditingsuccess : istate #region istate 成員 public void do() public void undo() #endregion }

狀態dusing system; class beginmake : istate #region istate 成員 public void do() public void undo() #endregion }

狀態eusing system; class cancelauditingmessage : istate #region istate 成員 public void do() public void undo() #endregion }

狀態fusing system; class completemake : istate #region istate 成員 public void do() public void undo() #endregion }

狀態gusing system; class completeorder : istate #region istate 成員 public void do() public void undo() #endregion }

狀態husing system; class payfailed : istate #region istate 成員 public void do() public void undo() #endregion }

狀態iusing system; class paysuccess : istate #region istate 成員 public void do() public void undo() #endregion }

狀態jusing system; class postsuccess : istate #region istate 成員 public void do() public void undo() #endregion }

狀態k狀態l

using system; class sentauditingmessage : istate #region istate 成員 public void do() public void undo() #endregion }

狀態musing system; class waitaudit : istate #region istate 成員 public void do() public void undo() #endregion }

狀態nusing system; class waitingpost : istate #region istate 成員 public void do() public void undo() #endregion }

狀態處理機

using system; class custcommodityauditing #region 屬性 public istate currentstate set } public istate askpay } public istate auditingfailed } public istate auditingsuccess } public istate beginmake } public istate cancelauditingmessage } public istate completemake } public istate completeorder } public istate payfailed } public istate paysuccess } public istate postsuccess } public istate receivesuccess } public istate sentauditingmessage } public istate waitaudit } public istate waitingpost } #endregion #region 方法 public void do() public void undo() #endregion }

呼叫者using system; using system.collections.generic; using system.text; namespace statepattern } }

執行結果:

變化多端的狀態模式 State Pattern

現在寫字樓越建越高,碼農上個班不但要擠個地鐵,還要擠個電梯。電梯的執行簡單有這麼幾個狀態 執行 停止 關閉 開啟,電梯想要正常的執行,就必須得遵循一定的規則,例如執行的時候不能開門,開門狀態不能執行。按照平常的邏輯,分別建立open,close,run,stop四個方法,方法裡通過switch當前的...

設計模式 狀態模式

狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...

設計模式 狀態模式

1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...