設計模式 狀態模式(C )

2021-10-01 15:21:04 字數 950 閱讀 2962

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

允許乙個物件在其內部狀態改變時改變它的行為,物件看起來似乎修改了它的類。狀態模式是一種物件行為型模式。

狀態模式的uml類圖:

環境類(context): 定義客戶感興趣的介面。維護乙個concretestate子類的例項,這個例項定義當前狀態。

抽象狀態類(state): 定義乙個介面以封裝與context的乙個特定狀態相關的行為。

具體狀態類(concretestate): 每一子類實現乙個與context的乙個狀態相關的行為。

// statemodel.**件

#include

using

namespace std;

class

context

;class

state

;class

context

~context()

void

someoperation()

void

setstate

(state * p)};

class

concretestatea

:public state

;class

concretestateb

:public state};

void concretestatea::

operation

(context * pcontext)

intmain()

設計模式 狀態模式 C

狀態模式主要解決當控制乙個物件狀態的轉換的條件表達過於複雜的情況,使得狀態的轉換不依賴於整體的操作。本文將通過乙個具體的例子說明狀態模式的應用。假設下面乙個場景 乙個新任務提交後,先是收集資料,資料收集完成後等等分配一台機器,分配到機器後就可以將此任務部署至此機器後就可以通知相關模組開始工作。先對此...

設計模式 狀態模式 C

狀態模式是產生乙個可以改變其類的物件,通過前端物件狀態的變化來使後端工作的不同物件履行其職責。通過改變乙個物件的狀態,使它的工作物件也發生變化。如果乙個物件在決定它要做什麼之前總是要對當前的 狀態做很多的判斷,那麼就可以考慮使用狀態模式。乙個壞的例子 worker.h include ifndef ...

設計模式 狀態模式(c )

狀態模式適用於 乙個物件有多種狀態,在不同狀態下執行同一操作的行為是不同的。例如,檔案在read only write only write and read 狀態下,執行讀 寫等操作時的行為是不同的。狀態模式基本思想 用動態繫結 執行時繫結,多型,用虛函式實現 代替if else或switch,以...