C++ 状态模式
簡(jiǎn)述
狀態(tài)模式(State Pattern)是行為設(shè)計(jì)模式之一。當(dāng)對(duì)象根據(jù)其內(nèi)部狀態(tài)改變其行為時(shí),將使用狀態(tài)設(shè)計(jì)模式。
| 版權(quán)聲明:一去、二三里,未經(jīng)博主允許不得轉(zhuǎn)載。
模式結(jié)構(gòu)
UML 結(jié)構(gòu)圖:
- Context(上下文):定義一個(gè)與 Client 交互的接口。它維護(hù)對(duì) ConcreteState 對(duì)象的引用,可以用該對(duì)象來(lái)定義當(dāng)前狀態(tài)。
- State(抽象狀態(tài)):定義接口,來(lái)聲明每個(gè) ConcreteState 應(yīng)該做什么。
- ConcreteState(具體狀態(tài)):為 State 中定義的方法提供實(shí)現(xiàn)。
優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
- 實(shí)現(xiàn)多態(tài)行為的好處是顯而易見(jiàn)的,并且很容易添加狀態(tài)來(lái)支持額外的行為。
- 在狀態(tài)模式中,對(duì)象的行為是其狀態(tài)中函數(shù)的結(jié)果,并且在運(yùn)行時(shí)根據(jù)狀態(tài)改變行為,這就消除了對(duì) switch/case 或 i
總結(jié)