在狀態(tài)模式(State Pattern)中,類的行為是基于它的狀態(tài)改變的。這種類型的設(shè)計模式屬于行為型模式。
在狀態(tài)模式中,我們創(chuàng)建表示各種狀態(tài)的對象和一個行為隨著狀態(tài)對象改變而改變的 context 對象。
對象的行為依賴于它的狀態(tài)(屬性),并且可以根據(jù)它的狀態(tài)改變而改變它的相關(guān)行為。
結(jié)構(gòu)圖
結(jié)角色與理解
- 狀態(tài)模式共分為三種角色:
- Context(上下文環(huán)境):將自身的狀態(tài)與行為分離出去,封裝成狀態(tài)類,持有抽象狀態(tài)類的引用,根據(jù)自身屬性變換更換具體狀態(tài)類。
- State(抽象狀態(tài)類):具體狀態(tài)類的抽象,可以持有上下文環(huán)境的引用來更換狀態(tài)。
- Concrete State(具體狀態(tài)類):實現(xiàn)不同狀態(tài)下的不同行為。
- 上下文環(huán)境引用抽象狀態(tài)類完成行為的調(diào)用,狀態(tài)類的狀態(tài)變化可以有上下文環(huán)境處理,也可以由狀態(tài)類處理。
- 狀態(tài)類可以共享,像開關(guān)對象一樣,可以被多個上下文環(huán)境引用。
核心代碼
抽象狀態(tài)類
具體狀態(tài)類
狀態(tài)類
客戶端
-
狀態(tài)機(jī)
+關(guān)注
關(guān)注
2文章
493瀏覽量
28221
發(fā)布評論請先 登錄
用C語言實現(xiàn)狀態(tài)機(jī)設(shè)計模式
基于入侵行為模式的告警關(guān)聯(lián)
上網(wǎng)行為管理新模式
設(shè)計模式:備忘錄設(shè)計模式
設(shè)計模式:訪問者設(shè)計模式
設(shè)計模式行為型:觀察者模式

c語言設(shè)計模式--狀態(tài)模式(狀態(tài)機(jī))

評論