一、例:工作狀態
二、狀態模式class
work
public
void
sethour
(int hour)
public
boolean
isworkfinished()
public
void
setworkfinished
(boolean workfinished)
public
void
writeprogram()
else
if(hour <13)
else
if(hour <17)
else
if(hour <21)
else}}
}public
class
states
}
狀態模式,當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。
工作狀態:狀態模式改進abstract
class
state
class
concretestatea
extends
state
}class
concretestateb
extends
state
}class
context
public state getstate()
public
void
setstate
(state state)
public
void
request()
}public
class
states
}
abstract
class
state
class
forenoonstate
extends
state
else}}
class
noonstate
extends
state
else}}
class
afternoonstate
extends
state
else}}
class
eveningstate
extends
state
else
else}}
}class
sleepingstate
extends
state
}class
reststate
extends
state
}class
work
public
double
gethour()
public
void
sethour
(double hour)
public
boolean
isfinish()
public
void
setfinish
(boolean finish)
public
void
setstate
(state s)
public
void
writeprogram()
}public
class
states
}
設計模式(二十)狀態模式
在狀態模式 state pattern 中,類的行為是基於它的狀態改變的。這種型別的設計模式屬於行為型模式。在狀態模式中,我們建立表示各種狀態的物件和乙個行為隨著狀態物件改變而改變的 context 物件。意圖 允許物件在內部狀態發生改變時改變它的行為,物件看起來好像修改了它的類。何時使用 中包含大...
設計模式(二十一) 狀態模式
狀態模式也是一種行為型模式,當我們的程式中需要一些狀態轉換,對於不同的狀態需要不同的行為時,我們就可以考慮使用狀態模式。下面用交通燈來當例子。我們需要紅黃綠三種顏色的狀態。inte ce state class redstate implements state class yellowstate ...
狀態模式 java設計模式(二十二)
共享狀態 優缺點和適用範圍 jdk中的應用 狀態模式 state pattern 允許乙個物件在內部狀態改變時改變行為,看起來似乎修改了類。狀態模式結構。狀態轉換可以由環境類統一負責。新增具體狀態需要修改環境類。public void changestate else if value 1 publ...