設計模式 狀態模式 Java

2021-07-22 22:57:41 字數 1277 閱讀 8683

狀態模式(state),當乙個物件的內在狀態改變時允許改變其行為。這個物件看上去就像是改變了它的類一樣。

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

狀態模式的好處:將與特定狀態相關的行為區域性化,並且將不同狀態的行為分割開來。將特定的狀態相關的行為都放到乙個物件中,由於所有與狀態相關的**都存在於某個concretestate中,所以通過定義新的子類可以很容易地增加新的狀態和轉換。

狀態模式通過把各種狀態轉移邏輯分布到state的子類之間,來減少相互間的依賴。

當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行為時,就可以考慮使用狀態模式了。

類圖:

舉乙個燈泡開關的例子,列出示例**:

//package com.dlut.designpattern.state;

public

class

lightbulb

public

void showstate()

public

void switchstate()else

if(offstate.class.isinstance(state))

}}abstract

class

state

class

onstate

extends

state

}class

offstate

extends

state

}

測試類:

//package com.dlut.designpattern.state;

public

class test

}

執行結果:

燈泡狀態:開啟…

燈泡狀態:關閉…

狀態模式也是比較好理解的設計模式。當行為隨著狀態改變時,我們就可以愉快地使用狀態模式來提公升逼格了。^_^

參考:

Java設計模式 狀態模式

目錄 定義如下 個人理解 通用類圖 角色介紹 state 抽象狀態角色 concretestate 具體狀態角色 context 環境角色 通用源 場景類 狀態模式的優點 狀態模式的缺點 使用場景 狀態模式又是乙個比較難的設計模式 當乙個物件內在狀態改變時允許其改變行為,這個物件看起來像改變了其類。...

Java設計模式 狀態模式

當乙個物件的內在狀態改變時允許改變其行為,對這個物件看起來像是改變了其類。狀態模式的uml圖如下 context 環境類,定義客戶感興趣的解耦,維護乙個states子類的例項,這個實力定義了物件當前的狀態。state 抽象狀態類或者狀態介面,定義乙個或一組介面,表示改狀態下的行為。concrete ...

Java設計模式 狀態模式

核心思想就是 當物件的狀態改變時,同時改變其行為。也就是行為由其狀態決定。介紹 意圖 允許物件在內部狀態發生改變時改變它的行為,物件看起來好像修改了它的類。何時使用 中包含大量與物件狀態有關的條件語句。如何解決 將各種具體的狀態類抽象出來。關鍵 通常命令模式的介面中只有乙個方法。而狀態模式的介面中有...