23种设计模式之状态模式
狀態(tài)模式的定義
定義: 當(dāng)一個對象內(nèi)在狀態(tài)改變時允許其改變行為, 這個對象看起來像改變了其類
通俗的說, 就是一個事物有不同的狀態(tài),在不同狀態(tài)下執(zhí)行各個方法時有不同的表現(xiàn), 將每個狀態(tài)都封裝成一個類, 然后通過上下文對象統(tǒng)一管理
其類圖如下:
?
其中的三個角色如下:
抽象狀態(tài)角色代碼:
?
抽象狀態(tài)中聲明一個環(huán)境角色, 提供各個狀態(tài)類自行訪問, 并且提供所有狀態(tài)的抽象行為, 由各個實現(xiàn)類實現(xiàn)
具體狀態(tài)角色代碼:
?
具體狀態(tài)角色有兩個職責(zé): 處理本狀態(tài)要完成的任務(wù), 決定是否可以過度到其他狀態(tài).
環(huán)境角色代碼:
?
環(huán)境角色有兩個不成文的約束:
場景類代碼:
?
這樣就實現(xiàn)了在不同狀態(tài)下的切換
狀態(tài)模式的應(yīng)用
狀態(tài)模式的優(yōu)點:
狀態(tài)模式的缺點:
狀態(tài)模式只有一個 缺點, 子類會太多, 也就是類膨脹. 一個事物有很多個狀態(tài)也不稀奇, 如果完全使用狀態(tài)模式就會有太多的子類, 不好管理. 其實有很多方式可以解決這個狀態(tài)問題, 如在數(shù)據(jù)庫中建立一個狀態(tài)表, 然后根據(jù)狀態(tài)執(zhí)行相應(yīng)的操作.
狀態(tài)模式的使用場景:
狀態(tài)模式適用于當(dāng)某個對象在它的狀態(tài)發(fā)生改變時, 他的行為也隨著發(fā)生比較大的變化, 也就是說在行為受狀態(tài)約束的情況下可以使用狀態(tài)模式, 而且使用時對象的狀態(tài)最好不要超過5個
總結(jié)
以上是生活随笔為你收集整理的23种设计模式之状态模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在模糊查询中怎样事先加载页面_8种信息类
- 下一篇: 设计模式之结构类模式PK