大話設計模式十六 狀態模式(無盡加班何時休)

2021-06-18 11:00:06 字數 804 閱讀 2485

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

可以把複雜的判斷邏輯簡化。

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

public inte***ce state

//concretestate類,具體狀態,每乙個子類實現乙個與context的乙個狀態相關的行為。

public class concretestatea implements state

}public class concretestateb implements state

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

public class context

public void request()

public state getstate()

public void setstate(state state) }

//客戶端**

public class main

}

狀態模式的好處:將特定的狀態相關的行為都放入乙個物件中,由於所有與狀態相關的**都存在於某個concretestate中,所以通過定義新的子類可以很容易地增加新的狀態和轉換,即消除龐大的條件分支語句。

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

Java大話設計模式學習總結(十六) 狀態模式

狀態模式 state 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列當中,可以把複雜的判斷邏輯簡化。當然,如果這個狀態判斷很簡單,那就沒必要使用 狀態模式 了。...

大話設計模式 狀態模式

在狀態模式 state pattern 中,類的行為是基於它的狀態改變的。這種型別的設計模式屬於行為型模式。我們建立表示各種狀態的物件和乙個行為隨著狀態物件改變而改變的 context 物件。大話設計模式中程傑老師給出的定義是,狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改...

大話設計模式 狀態模式

首先看一段 public class work else if hour 13 else if hour 17 else elseelse 當有很多條件判斷時,且很多的條件判斷後產生了很多的業務邏輯,雖然 可以正常執行,但是要修改某個邏輯,既整改邏輯流程也許就回發生改變,從而加大了維護時間的成本,並...