-
特點(diǎn):在面向?qū)ο缶幊趟枷胫校f(wàn)物皆為對(duì)象,狀態(tài)也不例外踪区。狀態(tài)也可以抽象為類,狀態(tài)類實(shí)例化后就是一個(gè)具體的狀態(tài)對(duì)象吊骤。
程序中通常都會(huì)有很多邏輯判斷if ... else ...
缎岗,像這樣一組邏輯判斷幾乎都可以抽象為一個(gè)狀態(tài)類,每一個(gè)分支為一個(gè)狀態(tài)對(duì)象白粉。但實(shí)際編程中沒(méi)必要每次都這樣做传泊,只有在相同的一組邏輯判斷多次(兩次以上)出現(xiàn)在程序當(dāng)中且每次出現(xiàn)的時(shí)候,相同的分支需要不同的算法鸭巴,就可以使用狀態(tài)模式進(jìn)行優(yōu)化眷细,尤其是每個(gè)邏輯分支都很復(fù)雜的情況,即分而治之鹃祖,方便復(fù)雜邏輯分支的維護(hù)和擴(kuò)展管理溪椎。 - 角色:
角色名稱 | 角色職責(zé) |
---|---|
State(狀態(tài)) | 定義狀態(tài)相關(guān)處理接口 |
ConcreteState(具體狀態(tài)) | 根據(jù)不同狀態(tài)實(shí)現(xiàn)State定義的相關(guān)接口 |
Context(狀況、前后關(guān)系恬口、上下文) | 持有當(dāng)前狀態(tài)的State實(shí)例校读,并對(duì)State進(jìn)行管理,如:切換楷兽,訪問(wèn)等 |
-
角色關(guān)系:
代碼示例:State
以上文獻(xiàn)參考:《圖解設(shè)計(jì)模式》