在狀態(tài)模式(State Pattern)中,類(lèi)的行為是基于它的狀態(tài)改變的。這種類(lèi)型的設(shè)計(jì)模式屬于行為型模式。
在狀態(tài)模式中,我們創(chuàng)建表示各種狀態(tài)的對(duì)象和一個(gè)行為隨著狀態(tài)對(duì)象改變而改變的 context 對(duì)象。
對(duì)象的行為依賴(lài)于它的狀態(tài)(屬性),并且可以根據(jù)它的狀態(tài)改變而改變它的相關(guān)行為。
結(jié)構(gòu)圖

結(jié)角色與理解
- 狀態(tài)模式共分為三種角色:
- Context(上下文環(huán)境):將自身的狀態(tài)與行為分離出去,封裝成狀態(tài)類(lèi),持有抽象狀態(tài)類(lèi)的引用,根據(jù)自身屬性變換更換具體狀態(tài)類(lèi)。
- State(抽象狀態(tài)類(lèi)):具體狀態(tài)類(lèi)的抽象,可以持有上下文環(huán)境的引用來(lái)更換狀態(tài)。
- Concrete State(具體狀態(tài)類(lèi)):實(shí)現(xiàn)不同狀態(tài)下的不同行為。
- 上下文環(huán)境引用抽象狀態(tài)類(lèi)完成行為的調(diào)用,狀態(tài)類(lèi)的狀態(tài)變化可以有上下文環(huán)境處理,也可以由狀態(tài)類(lèi)處理。
- 狀態(tài)類(lèi)可以共享,像開(kāi)關(guān)對(duì)象一樣,可以被多個(gè)上下文環(huán)境引用。
核心代碼
抽象狀態(tài)類(lèi)

具體狀態(tài)類(lèi)

狀態(tài)類(lèi)

客戶(hù)端

-
狀態(tài)機(jī)
+關(guān)注
關(guān)注
2文章
495瀏覽量
28721
發(fā)布評(píng)論請(qǐng)先 登錄
用C語(yǔ)言實(shí)現(xiàn)狀態(tài)機(jī)設(shè)計(jì)模式
基于入侵行為模式的告警關(guān)聯(lián)
上網(wǎng)行為管理新模式
設(shè)計(jì)模式:備忘錄設(shè)計(jì)模式
設(shè)計(jì)模式:訪問(wèn)者設(shè)計(jì)模式
設(shè)計(jì)模式行為型:中介模式
設(shè)計(jì)模式行為型:備忘錄模式
設(shè)計(jì)模式行為型:策略模式
設(shè)計(jì)模式行為型:訪問(wèn)者模式
設(shè)計(jì)模式行為型:觀察者模式
c語(yǔ)言設(shè)計(jì)模式--狀態(tài)模式(狀態(tài)機(jī))

設(shè)計(jì)模式行為型:狀態(tài)模式
評(píng)論