狀態模式是產生乙個可以改變其類的物件,通過前端物件狀態的變化來使後端工作的不同物件履行其職責。
通過改變乙個物件的狀態,使它的工作物件也發生變化。
如果乙個物件在決定它要做什麼之前總是要對當前的
狀態做很多的判斷,那麼就可以考慮使用狀態模式。
乙個壞的例子
worker.h
#include #ifndef _worker_h_
#define _worker_h_
using namespace std;
class worker
; void setstatus(int status);
void work();
};#endif
worker.cpp
#include "worker.h"
void worker::setstatus(int status)
void worker::work()
}
main.cpp
#include "worker.h"
void main()
為什麼是個壞例子: 在work() 函式中,每次都要對當前worker的狀態進行檢查,然後才能通過判斷狀態來決定執行什麼樣的功能。
使用狀態模式後的實現
設計模式 狀態模式 C
狀態模式主要解決當控制乙個物件狀態的轉換的條件表達過於複雜的情況,使得狀態的轉換不依賴於整體的操作。本文將通過乙個具體的例子說明狀態模式的應用。假設下面乙個場景 乙個新任務提交後,先是收集資料,資料收集完成後等等分配一台機器,分配到機器後就可以將此任務部署至此機器後就可以通知相關模組開始工作。先對此...
設計模式 狀態模式(c )
狀態模式適用於 乙個物件有多種狀態,在不同狀態下執行同一操作的行為是不同的。例如,檔案在read only write only write and read 狀態下,執行讀 寫等操作時的行為是不同的。狀態模式基本思想 用動態繫結 執行時繫結,多型,用虛函式實現 代替if else或switch,以...
設計模式 狀態模式(C )
參考 設計模式讀書筆記 狀態模式 如下 filename state.h datetime 2016.09.19 author hjs e mail jingshuang hu 163.com blog ifndef state h define state h include context.h ...