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