設計模式 狀態模式

2021-07-14 11:26:28 字數 1714 閱讀 5943

我們通常在寫乙個經常需要被改變狀態的類並且需要向客戶端反映的話,那麼就需要大量的if..else來做判斷,**都被揉成一團,解耦性和可讀性會變得極差。

所以,狀態模式就出現了,它就是為了解決這種窘迫的狀況而誕生的。

比如:家長們肯定都很關心自己的孩子現在在幹什麼,那麼就用類來表示一下狀態模式的作用,使得這個模式更加得直觀。

例項**:

我們先來定義乙個狀態介面,定義了孩子的三種狀態

public

inte***ce state

我們來寫三個實現類,分別實現孩子的三種狀態

public

class

kidplay

implements

state

@override

public

void

play()

@override

public

void

death()

@override

public

void

outstate()

}public

class

kidstudy

implements

state

@override

public

void

play()

@override

public

void

death()

@override

public

void

outstate()

}public

class

kiddeath

implements

state

@override

public

void

play()

@override

public

void

death()

@override

public

void

outstate()

}

然後我們還需要乙個context類。

public

class

context

implements

state

public state getkidstate()

@override

public

void

study()

@override

public

void

play()

@override

public

void

death()

@override

public

void

outstate()

}

然後讓我們來測一測吧

通過這個模式我們就可以根據狀態的不同來採取不同的處理操作,可以避免大量的if…else判斷使得**變成一團雜醬麵。

設計模式 狀態模式

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

設計模式 狀態模式

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

設計模式 狀態模式

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