設計模式學習筆記之狀態模式

2021-06-22 22:53:46 字數 938 閱讀 1049

定義:

狀態模式允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。

解決問題:

主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。

結構圖:

狀態模式所涉及到的角色有:

●環境(context)角色,也成上下文:定義客戶端所感興趣的介面,並且保留乙個具體狀態類的例項。這個具體狀態類的例項給出此環境物件的現有狀態。

●抽象狀態(state)角色:定義乙個介面,用以封裝環境(context)物件的乙個特定的狀態所對應的行為。

●具體狀態(concretestate)角色:每乙個具體狀態類都實現了環境(context)的乙個狀態所對應的行為。

例項:

//環境角色上下文

public class context

/*** 使用者感興趣的介面方法

*/public void request(string sampleparameter)

}//狀態介面

public inte***ce state

//具體狀態類a

public class concretestatea implements state

}//具體狀態類b

public class concretestateb implements state

}//客戶端類

public class client

}

設計模式學習筆記 狀態模式

定義 當乙個物件內在的狀態改變時,允許其改變行為,這個物件看起來像是改變了其類。狀態模式不太好理解,我現在還沒有完全理解,這個模式給我的第一印象就是比較亂,給我的感覺好像是兩個類互相依賴,呼叫 的方法,呼叫 的方法,弄的好亂,所以這個狀態模式就不用通用類圖去描述了,那樣會不知所云,還是舉乙個實際的例...

設計模式學習筆記 狀態模式

模式中的角色 state 抽象狀態角色 concretestate 具體狀態角色 context 環境角色 狀態模式通用類圖如下 具體的類圖如下 實現如下 package state2 context類,維護乙個concretestate子類的例項,這個例項定義當前的狀態。public class ...

設計模式學習筆記 狀態模式

1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...