狀態模式(state pattern) :允許乙個物件在其內部狀態改變時改變它的行為,物件看起來似乎修改了它的類。其別名為狀態物件(objects for states),狀態模式是一種物件行為型模式。
狀態模式包含如下角色:
/** * 狀態模式
*///state: 抽象狀態類
abstract
class
state
//context: 環境類
class
context
public
function
__get
($name)
public
function
__set
($name, $value)
public
function
request()}
//concretestate: 具體狀態類
class
concretestatea
extends
state
public
function
handle
(context $context)
}class
concretestateb
extends
state
public
function
handle
(context $context)
}$a=new context(new concretestatea());
$a->request();
$a->request();
$a->request();
$a->request();
string
'concretestatea' (length=14)
string
'concretestateb' (length=14)
string
'concretestatea' (length=14)
string
'concretestateb' (length=14)
string
'concretestatea' (length=14)
設計模式 十一 狀態模式
狀態模式 state 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的判斷邏輯化。狀態抽象類,定義乙個介面以及封裝與context 的乙個特定...
(十一)狀態模式
在業務中,常常有那種狀態巨多的東西,比如乙個立項,可能有新建 已提交 已審批等多種狀態 乙個活動可能有新建 已提交 審核通過 執行中 結束等多種狀態 因此,這個設計模式,指的是面向乙個立項 乙個訂單這個 物件 的邏輯 public inte ce state public class newstat...
設計模式(二十一) 狀態模式
狀態模式也是一種行為型模式,當我們的程式中需要一些狀態轉換,對於不同的狀態需要不同的行為時,我們就可以考慮使用狀態模式。下面用交通燈來當例子。我們需要紅黃綠三種顏色的狀態。inte ce state class redstate implements state class yellowstate ...