state:所有具體狀態類的共同介面,使用這個介面宣告當前狀態物件,就能指向任意具體狀態類。
concretestate:具體的狀態類,處理來自context的請求;每個concretestate都提供了它自己對於請求的實現。所以,當context改變當前狀態物件時,行為也跟著改變。
context:上下文,擁有一些內部狀態,接收客戶端的請求,並委託給當前狀態物件去處理。
定義豹女的狀態介面
/**
* 奈德麗(豹女)狀態介面
* * @author: jsk
* @date: 2019/7/28 12:07
*/public
inte***ce
nidaleestate
兩種具體狀態的實現:人形狀態、獅形狀態
public
class
nidaleepersonstate
implements
nidaleestate
@override
public
void
skillw()
}public
class
nidaleelionstate
implements
nidaleestate
@override
public
void
skillw()
}
奈德麗類(context上下文),接收客戶端的請求,並委託給具體狀態去執行
public
class
nidalee
public
void
skillq()
public
void
skillw()
public
void
skillr()
else
}}
客戶端執行
public
class
nidaleeclient
}
執行結果 設計模式 狀態模式
狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...
設計模式 狀態模式
1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...
設計模式 狀態模式
描述 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。通常應用在有好多狀態的流程中。類圖 以下程式模擬糖果機器投幣取糖果的狀態流程。1.定義狀態...