1.意圖
允許乙個物件在其內部狀態改變時改變它的行為。物件看起來似乎修改了它的類。
2.適用性
在下面的兩種情況下均可使用 state模式:
3.結構
/*# 狀態模式
根據狀態決定行為
狀態模式用於分離狀態和行為。
允許乙個物件在其內部狀態改變時改變它的行為。物件看起來似乎修改了它的類
(源於design pattern):當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。
狀態模式主要解決的是當控制乙個物件狀態的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不
同狀態的一系列類中,可以把複雜的判斷邏輯簡化。
*/import
("fmt"
"testing"
)//女孩多愁善感,假設有三種動作
type mmstate inte***ce
//假設有三種狀態
type
(//開心狀態
mmnervousstate struct
//焦慮狀態
mmsadstate struct
//難過狀態
)//開心時的動作
func
smile()
func
cry(
)func
say(
)//焦慮時的動作
func
(mmnervousstate)
smile()
func
(mmnervousstate)
cry(
)func
(mmnervousstate)
say(
)//難過時的動作
func
(mmsadstate)
smile()
func
(mmsadstate)
cry(
)func
(mmsadstate)
say(
)//當增加新的狀態時非常不方便,都要重新繫結
type mm struct
func
(this mm)
smile()
func
(this mm)
cry(
)func
(this mm)
say(
)func
testmmstate
(t *testing.t)}.
say(
) mm}.
say(
) mm}.
say(
)}
狀態 State 模式
物件狀態影響物件行為 物件擁有不同的狀態,往往會行使不同的行為.1 動機 在軟體構建過程中,某些物件的狀態如果改變,其行為也會隨之而發生變化。比如文件處於唯讀狀態,其支援的行為和讀寫狀態支援的行為就可能完全不同。如何在執行時根據物件的狀態來透明地更改物件的行為?而不會為物件操作和狀態轉化之前引入緊耦...
狀態模式 State
個人理解 核心是context維護乙個當前狀態,並在invoke狀態方法時,將context維護的當前狀態更新至下一狀態 uml類圖 實現 using system namespace decoratormode public class agecontext public void printag...
state 狀態模式
include include using namespace std 1 將 state宣告為 context的友元類 friend class 其作用是讓 state模式訪問 context 的 protected介面 changesate 2 state 及其子類中的操作都將 context ...