java 狀態模式(大話設計模式)

2021-09-10 03:35:58 字數 2439 閱讀 3258

該模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的判斷邏輯簡化。當然,如果這個判斷邏輯很簡單,那就沒必要用「狀態模式」了。【互相組合】

* 抽象狀態類

* * @author administrator

* */

public

abstract

class

state

class

concretestatea

extends

state

}class

concretestateb

extends

state

}class

concretestatec

extends

state

}/**

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

* * @author administrator

* */

public

class

context

public state getstate()

public

void

setstate

(state state)

public

void

request()

}/**

* 客戶端:不斷請求,不斷更改狀態

* * @author administrator

* */

public

class

stateclient

}

/**

* 狀態模式(state)

* 抽象狀態

*/public

abstract

class

state

/** * 狀態模式(state)

* 上午工作狀態

*/public

class

forenoonstate

extends

state

else}}

/** * 狀態模式(state)

* 中午工作狀態

*/public

class

noonstate

extends

state

else}}

/** * 狀態模式(state)

* 下午工作狀態

*/public

class

afternoonstate

extends

state

else

else}}

}/**

* 狀態模式(state)

* 晚間工作狀態

*/public

class

eveningstate

extends

state

else

else}}

/** * 狀態模式(state)

* 睡眠狀態

*/public

class

sleepingstate

extends

state

}/**

* 狀態模式(state)

* 下班休息狀態

*/public

class

reststate

extends

state

}/**

* 狀態模式(state)

* 工作類

*/public

class

work

public

intgethour()

public

void

sethour

(int hour)

public

boolean

isfinish()

public

void

setfinish

(boolean finish)

public state getstate()

public

void

setstate

(state current)

public

void

coding()

}/**

* 狀態模式(state)

* 客戶端main方法

*/public

class

client

}

大話設計模式 狀態模式

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

大話設計模式 狀態模式

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

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

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