狀態模式
當乙個物件的內部狀態改變時允許改變其行為,這個物件看起來就像是改變了其類一樣
狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時,把狀態判斷的邏輯轉移到不同狀態的一系列類當中,從而把複雜的邏輯判斷簡單化,
狀態模式結構圖
//一系列特定狀態行為的介面
public
abstract
class
state
//早上狀態類
public
class
morningstate
extends
state else
}}//中午狀態類
public
class
noonstate
extends
state else
}}//下午狀態類
public
class
afternoonstate
extends
state
} else else }}
}//晚上實體類
public
class
nightstate
extends
state
if (work.gettime() < 24 ) else
work.setstate(new earlystate());
work.currentworkstate();}}
}//凌晨加班實體類
public
class
earlystate
extends
state
if (work.gettime() <= 2) else
}}//工作context類
public
class
work
public
void
setfinish(boolean finish)
public
work()
public state getstate()
public
void
setstate(state state)
public
intgettime()
public
void
settime(int time)
public
void
currentworkstate()
}//測試**
public
class
earlystate
extends
state
if (work.gettime() <= 2) else
}}//測試客戶端**
狀態模式的好處是減少大量的條件分支語句,而且減少了state類各個子類之間的依賴關係,
當乙個物件的行為取決於它的狀態,並且必須是在執行時改變它的狀態的時候,這個時候則可以考慮使用狀態模式。
設計模式之狀態模式
一 作用 允許乙個物件在其內部狀態改變時改變它的行為,物件看起來似乎修改了它的類。其別名為狀態物件 objects for states 狀態模式是一種物件行為型模式。二 例子 狀態抽象類 abstract class state 具體狀態類,每個狀態對應乙個類 class concretestat...
設計模式之 狀態模式
gof 設計模式 中給狀態模式下的定義為 允許乙個物件在其內部狀態改變時改變它 的行為。這個物件看起來似乎修改了它的類。看起來,狀態模式好像是神通廣大 居然能夠 修改自身的類 能夠讓程式根據不同的外部情況來做出不同的響應,最直接的方法就是在程式中將這些可能發生的外部情況全部考慮到,使用 if els...
設計模式之狀態模式
定義 允許乙個物件在其內部狀態變化時改變它的行為,物件看起來似乎修改了它所屬的類。類圖 說明 context表示環境類,它定義了客戶應用程式感興趣的介面,並維護乙個concretestate子類的例項,這個例項用於定義當前狀態 state表示抽象狀態類,它定義了乙個介面以封裝與context的乙個特...