設計模式 十一 狀態模式

2021-10-21 16:52:58 字數 987 閱讀 8417

狀態模式 state ,當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。

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

//狀態抽象類,定義乙個介面以及封裝與context 的乙個特定狀態相關的行為

public

abstract

class

state

//context 維護乙個concretestate的例項,這個例項定義當前狀態

public

class

context

//可讀寫的狀態

public state getstate()

public

void

setstate

(state state)

//對請求做處理,設定下乙個狀態

public

void

request()

}//state的具體狀態子類,每乙個子類實現乙個狀態

public

class

concretestatea

extends

state

}public

class

concretestateb

extends

state

public

static

void

main

(string[

] args)

}

輸出

當前狀態day12state.concretestateb

當前狀態day12state.concretestatea

當前狀態day12state.concretestateb

當前狀態day12state.concretestatea

(十一)狀態模式

在業務中,常常有那種狀態巨多的東西,比如乙個立項,可能有新建 已提交 已審批等多種狀態 乙個活動可能有新建 已提交 審核通過 執行中 結束等多種狀態 因此,這個設計模式,指的是面向乙個立項 乙個訂單這個 物件 的邏輯 public inte ce state public class newstat...

設計模式(二十一) 狀態模式

狀態模式也是一種行為型模式,當我們的程式中需要一些狀態轉換,對於不同的狀態需要不同的行為時,我們就可以考慮使用狀態模式。下面用交通燈來當例子。我們需要紅黃綠三種顏色的狀態。inte ce state class redstate implements state class yellowstate ...

PHP設計模式系列(十一) 狀態模式

狀態模式 state pattern 允許乙個物件在其內部狀態改變時改變它的行為,物件看起來似乎修改了它的類。其別名為狀態物件 objects for states 狀態模式是一種物件行為型模式。狀態模式包含如下角色 狀態模式 state 抽象狀態類 abstract class state con...