允許一個對象在其内部狀态改變時改變它的行為,對象看起來似乎修改了它的類。
allow an object to alert its behavior when its internal state changes. the object will appear to change its class.

狀态模式的結構中包括三種角色。
+ 環境(context):環境是一個類,該類含有抽象狀态(state)聲明的變量,可以引用任何具體狀态類的執行個體。使用者對該環境(context)類的執行個體在某種狀态下的行為感興趣。
+ 抽象狀态(state):抽象狀态是一個接口或抽象類。抽象狀态中定義了與環境(context)的一個特定狀态相關的如果個方法。
+ 具體狀态(concrete state):具體狀态是實作(擴充)抽象狀态(抽象類)的類。
使用一個類封裝對象的一種狀态,很容易增加新的狀态。
在狀态模式中,環境(context)中不必出現大量的條件判斷語句。環境(context)執行個體所呈現的狀态變得更加清晰、容易了解。
使用狀态模式可以讓使用者程式很友善地切換環境(context)執行個體的狀态。
使用狀态模式不會讓環境(context)的執行個體中出現内部狀态不一緻的情況。
當狀态對象沒有執行個體變量時,環境(context)的各個執行個體可以共享一個狀态對象。
一個對象的行為依賴于它的狀态,并且它必須在運作時根據狀态改變它的行為。
需要編寫大量的條件分支語句來決定一個操作的行為,而且這些條件恰好表示對象的一種狀态。
<a href="https://github.com/androidwolf">mygithub</a>