設計模式(三) 狀態模式

2022-07-24 14:18:27 字數 1467 閱讀 3863

目錄

當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。

在平常開發自己也會遇到好多方法過長,裡面的判斷語句太多,導致後續修改十分麻煩。今天看到狀態模式的介紹,覺得很受益。下面通過一段**錯誤的顯示一遍沒有使用狀態模式的**

public class work  else if (hour < 13)  else if (hour < 17)  else  else if (hour <12) }}

}從上述**中看出,當我要修改hour的判斷範圍,或者在各個判斷條件之後新增一些功能,都會使這段方法變得十分長,而且閱讀起來也比較繁瑣。

所以**過長了就有壞味道了。在物件導向的設計中也希望做到**的責任分解。

當乙個物件狀態轉換的條件表示式過於複雜的時候,把狀態的判斷邏輯移到不同的一系列類當中,可以把複雜的判斷邏輯簡單化,這就是狀態模式的主要作用。但並不是所有有判斷的都要使用狀態模式,簡單的判斷邏輯就不需要了。

**改良

/**

* 工作類 沒有了判斷語句

從上術**中,在客戶端**不需要做任何的修改,程式可以變得非常靈活,當程式還需要新增乙個額外的工作狀態時,再新增乙個其它狀態類的**,也不影響其它狀態類的**。

設計模式 狀態模式

狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...

設計模式 狀態模式

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

設計模式 狀態模式

描述 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。通常應用在有好多狀態的流程中。類圖 以下程式模擬糖果機器投幣取糖果的狀態流程。1.定義狀態...