天天看點

Java設計模式--狀态模式狀态模式(别名:狀态對象)State Pattern(Another Name: Object for States)類圖模式的結構與使用簡單的例子狀态模式的優點适用狀态模式的情景下載下傳源碼請到

允許一個對象在其内部狀态改變時改變它的行為,對象看起來似乎修改了它的類。

allow an object to alert its behavior when its internal state changes. the object will appear to change its class.

Java設計模式--狀态模式狀态模式(别名:狀态對象)State Pattern(Another Name: Object for States)類圖模式的結構與使用簡單的例子狀态模式的優點适用狀态模式的情景下載下傳源碼請到

狀态模式的結構中包括三種角色。

+ 環境(context):環境是一個類,該類含有抽象狀态(state)聲明的變量,可以引用任何具體狀态類的執行個體。使用者對該環境(context)類的執行個體在某種狀态下的行為感興趣。

+ 抽象狀态(state):抽象狀态是一個接口或抽象類。抽象狀态中定義了與環境(context)的一個特定狀态相關的如果個方法。

+ 具體狀态(concrete state):具體狀态是實作(擴充)抽象狀态(抽象類)的類。

使用一個類封裝對象的一種狀态,很容易增加新的狀态。

在狀态模式中,環境(context)中不必出現大量的條件判斷語句。環境(context)執行個體所呈現的狀态變得更加清晰、容易了解。

使用狀态模式可以讓使用者程式很友善地切換環境(context)執行個體的狀态。

使用狀态模式不會讓環境(context)的執行個體中出現内部狀态不一緻的情況。

當狀态對象沒有執行個體變量時,環境(context)的各個執行個體可以共享一個狀态對象。

一個對象的行為依賴于它的狀态,并且它必須在運作時根據狀态改變它的行為。

需要編寫大量的條件分支語句來決定一個操作的行為,而且這些條件恰好表示對象的一種狀态。

<a href="https://github.com/androidwolf">mygithub</a>