Java設計模式(十三):狀態模式

狀態模式(state pattern)

狀態模式(state pattern):屬於對象的行爲型模式。又叫狀態對象模式(pattern of objects for state);當一個對象的內在狀態改變時,允許改變其行爲,這個對象看起來像是改變其了類。


狀態模式UML圖

Java設計模式(十三):狀態模式

Java


狀態模式涉及的角色

抽象狀態(State)角色:定義一個接口,用以封裝環境(Context)對象的一個特定的狀態相關的行爲。環境(Context)角色:維護一個具體狀態(ConcreteState)實例,這個實例定義當前的狀態。具體狀態(ConcreteState)角色:每一個具體狀態(ConcreteState)實例都實現了與環境(Context)對象的一個狀態相關的行爲。


示例代碼

抽象狀態類 State

Java設計模式(十三):狀態模式

Java

環境類 Context

Java設計模式(十三):狀態模式

Java

具體狀態類A ConcreteStateA

Java設計模式(十三):狀態模式

Java

具體狀態類B ConcreteStateB

Java設計模式(十三):狀態模式

Java

*客戶端測試類 *點擊打開鏈接

Java設計模式(十三):狀態模式

Java

狀態模式的優點

  1. 狀態模式將與特定狀態相關的行爲局部化,並且將不同狀態的行爲分割開來。也就是說可以將特定的狀態相關的行爲都放入一個對象中,由於所有與狀態相關的代碼都存在於某個 ConcreteState 中,所以通過定義新的子類可以很容易地增加行的狀態和轉換。這樣可以消除龐大的條件分支語句。

  2. 狀態模式通過把各種狀態轉移邏輯分佈到 State 的子類之間,來減少相互間的依賴。


狀態模式使用場景

當一個對象的行爲取決於它的狀態,並且它必須在運行時刻根據狀態改變它的行爲時,就可以考慮使用狀態模式了。

每晚8:00燭光學院的講師將會在騰訊課堂燭光學院Java高級免費試聽課程中給大家詳細講解Java設計模式呦

Java學習資料獲取(複製下段連接至瀏覽器即可)
data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==

漫談JAVA中的各種鎖以及最優的zookeeper分佈式鎖解決方案(視頻)

點擊打開鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章