1.核心:用於解決系統中複雜物件的狀態轉換以及不同狀態下行為的封裝問題
2.角色:
<1>context環境類:維護乙個state物件,定義了當前的狀態,並控制狀態的切換
<2>state抽象狀態類
<3>concretestate具體狀態類:每乙個類封裝乙個狀態對應的行為
3.開發中的場景:
-銀行系統中賬號狀態的管理
-oa系統中公文狀態的管理
-執行緒物件各狀態之間的切換
4.示例**:
<1>抽象狀態
//抽象狀態
public
inte***ce state
<2>具體狀態
//具體狀態
public
class
freestate
implements
state
}//具體狀態
public
class
bookedstate
implements
state
}//具體狀態
public
class
livedstate
implements
state
}
<3>上下文環境
//環境類,持有房間狀態,並實現裝態切換
public
class context
}
<4>客戶端
public
class client
}
執行結果:
修改房間狀態
房間空閒,可預定
修改房間狀態
房間已預定,可以入住
修改房間狀態
房間入住,請勿打擾
4.示例用類圖
設計模式 狀態模式
狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...
設計模式 狀態模式
1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...
設計模式 狀態模式
描述 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。通常應用在有好多狀態的流程中。類圖 以下程式模擬糖果機器投幣取糖果的狀態流程。1.定義狀態...