設計模式狀態

2022-08-29 10:18:15 字數 678 閱讀 8670

狀態模式

設計原則:遵循單一職責、依賴倒置、開閉原則

常用場景:乙個物件在多個狀態下行為不同,且這些狀態可互相轉換

使用概率:20%

複雜度:中

變化點:狀態的種類

選擇關鍵點:這些狀態是否經常在執行時需要在不同的動態之間相互轉換

逆鱗:無

相關設計模式

策略模式:二者的實現方式非常相似,策略介面與狀態介面,具體的策略與具體的狀態以及二者都擁有的上下文,如果看它們的類圖

,會發現幾乎一模一樣,而二者不同的地方就在於,狀態模式經常會在處理請求的過程中更改上下文的狀態,

而策略模式只是按照不同的演算法處理演算法邏輯,而且從實際場景來講,顧名思義,狀態模式改變的是狀態,策略模式改變的是策略

主要思想:

實際就是當前物件的狀態(往往是乙個或多個屬性)不同,那麼同樣的方法執行結果是不同的

就是在方法內進行狀態判斷if else 的執行

注意是判斷本物件的屬性,而策略模式往往是根據傳參來判斷

public

class

mystatue

public

void

dosomething()

else

if (status==2)

else

}}

設計模式 狀態模式

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

設計模式 狀態模式

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

設計模式 狀態模式

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