設計模式 狀態模式

2021-09-26 23:32:35 字數 1814 閱讀 5344

平台

位址csdn

個人部落格

狀態模式:允許物件在內部狀態改變是改變它的行為,物件看起來好像修改了它的類。你需要在乙個類中管理狀態,狀態模式提供了封裝狀態的技巧。

類設計

**實踐

狀態流轉

模擬乙個任務的狀態變化

public

inte***ce

taskstate

//準備狀態

@data

@allargsconstructor

public

class

preparestate

implements

taskstate

@override

public

void

getstatus()

}//執行狀態

@data

@allargsconstructor

public

class

runningstate

implements

taskstate

@override

public

void

getstatus()

}//手動停止

@data

@allargsconstructor

public

class

directstopstate

implements

taskstate

@override

public

void

getstatus()

}//等等...

@data

public

class

taskstatemanagercontext

}

角色分析

taskstatemanagercontext:上下文是乙個類,擁有一些內部狀態,用於狀態的切換管理。內部一般會定義request方法,可以委託給對應的狀態類來處理(本文示例中直接在main函式中展示的,未做區分)

taskstate的介面定義了乙個所有具體狀態的共同介面,任何狀態都實現這個相同的介面,這樣依賴,狀態之間可以互相替換

設計要點

設計模式 狀態模式

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

設計模式 狀態模式

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

設計模式 狀態模式

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