設計模式 狀態模式(State Pattern)

2022-05-31 17:45:13 字數 1413 閱讀 2270

建立於:2012-07-16

出處: 收錄於:2013-03-01

允許乙個物件在其內部狀態改變時改變它的行為。物件看起來似乎修改了它的類。

view code

1

using

system;2//

客戶端3

class

program416

}1718public

class

context

1924

set 25}

26public

context(state state)

2730

public

void

request()

3134}35

public

abstract

class

state

3639

40public

class

concretestatea : state

4147}48

public

class

concretestateb : state

4955 }

執行結果:

電燈有兩個狀態,開(亮)與關(不亮),下面就用狀態模式來實現對電燈的控制。

優點狀態模式將與特定狀態相關的行為區域性化,並且將不同狀態的行為分割開來。

所有狀態相關的**都存在於某個conceretestate中,所以通過定義新的子類很容易地增加新的狀態和轉換。

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

缺點導致較多的concretestate子類

設計模式 狀態模式

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

設計模式 狀態模式

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

設計模式 狀態模式

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