抽象環境角色:
public
abstract
class state
// 行為1
public
abstract
void
handle1();
// 行為2
public
abstract
void
handle2();
}
環境角色:
public
class
concretestate1
extends
state
@override
public
void
handle2()
}public
class
concretestate2
extends
state
@override
public
void
handle2()
}
具體環境角色:
public
class
context
// 設定當前狀態
public
void
setcurrentstate(state currentstate)
// 行為委託
public
void
handle1()
public
void
handle2()
}
場景類:
public
class client
}
環境角色有兩個不成文的約束
子類會太多【主要的缺點–資料庫狀態表可以來解決】
狀態模式適用於當某個物件在它的狀態發生改變時,它的行為也隨著發生比較大的變化,也就是說在行為受約束的情況下可以使用狀態模式,而且使用物件的狀態最好不超5個
設計模式 設計模式原則
1 單一職責原則 srp 乙個類應當只有乙個引起其變化的原因。使用單一職責原則的好處有 1 類的複雜性降低 2 可讀性提高 3 可維護性提高 4 變更引起的風險降低 2 黎克特制替換原則 lsp 在使用父類的地方,可以使用其子類替換。黎克特制替換原則的含義 1 子類必須完全實現父類的方法 2 子類可...
設計模式 狀態模式
狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...
設計模式 狀態模式
1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...