狀態模式(State) 考勤系統

2021-07-09 15:56:00 字數 1235 閱讀 2293

定義:

狀態模式是物件的行為模式,允許乙個物件在其內部狀態改變時改變他的行為,這個物件看上去就像改變了他的類一樣。

角色:

環境(context)角色:定義客戶端感興趣的介面,並且保留乙個具體狀態類的例項,具體狀態類的例項給出環境類的當前狀態。

抽象狀態(state)角色:定義乙個介面,用以封裝環境角色的具體狀態類的行為。

具體狀態(concretestate)角色:每乙個具體狀態類都實現環境角色的狀態對應的具體行為。

例子:

每個工廠都會有考勤系統,其中對上班遲到的懲罰可分成不同的級別,如果遲到30分鐘之內不扣錢,如果遲到超過30分鐘要扣半天的工資,此時將遲到的行為抽象到介面中,作為抽象狀態角色(state),不同的遲到行為作為具體狀態角色(concretestate),環境角色則根據不同的狀態呼叫不同的具體狀態類。

類圖:

* 環境角色類

* @author wang

*/public class context

//轉交抽象類處理

public void request(string mess)

}/**

* 抽象狀態類

* @author wang

*/public inte***ce cardstate

/** * 具體狀態類

* @author wang

*/public class concretecardstatea implements cardstate

}/**

* 具體狀態類

* @author wang

*/public class concretecardstateb implements cardstate

}/**

* 客戶端類

* @author wang

*/public class client

}執行結果:

狀態 State 模式

物件狀態影響物件行為 物件擁有不同的狀態,往往會行使不同的行為.1 動機 在軟體構建過程中,某些物件的狀態如果改變,其行為也會隨之而發生變化。比如文件處於唯讀狀態,其支援的行為和讀寫狀態支援的行為就可能完全不同。如何在執行時根據物件的狀態來透明地更改物件的行為?而不會為物件操作和狀態轉化之前引入緊耦...

狀態模式 State

個人理解 核心是context維護乙個當前狀態,並在invoke狀態方法時,將context維護的當前狀態更新至下一狀態 uml類圖 實現 using system namespace decoratormode public class agecontext public void printag...

state 狀態模式

include include using namespace std 1 將 state宣告為 context的友元類 friend class 其作用是讓 state模式訪問 context 的 protected介面 changesate 2 state 及其子類中的操作都將 context ...