乙個物件想內部狀態類改變時,允許改變其行為。就是把乙個物件的狀態改到一系列狀態類中,在狀態類中控制條件判斷、狀態改變。
1) 將狀態的行為都封裝都狀態類中,不同的狀態不同的類。
2)狀態轉化條件在狀態類中,不會出現狀態隨意變換的問題。
3) 可拓展性性強。
狀態的越多,類越多
1)上下文:維護當前狀態。
2)抽象狀態:定義封裝狀態變化條件的介面
3)具體狀態:
#include "stdafx.h"
#include #include //1.上下文宣告
class abstractscore;//類的宣告只能用類的指標,如果需要呼叫方法,需要對類的方法也要宣告
class scorecontext
;//2.抽象狀態宣告
class abstractscore
;//1.上下文實現
abstractscore * scorecontext:: getscorestate()
;void scorecontext::setscorestate(abstractscore *abstractscore)
;void scorecontext::add(int score)
;//2.抽象狀態實現
void abstractscore::addscore(int score)
//3.具體狀態
設計模式 16 狀態模式
狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。解決的問題 當控制乙個物件狀態轉換的條件表示式過於複雜,把狀態的判斷邏輯轉移到表示不同狀態的一系列類中,把複雜的判斷邏輯簡單化。state 抽象狀態類,定義介面以封裝與context乙個特定狀態相關的行為 concer...
16 設計模式之狀態模式
對有狀態的物件,把複雜的 邏輯判斷 提取到不同的狀態物件中,允許狀態物件在其內部狀態發生改變時改變其行為。狀態模式包含以下主要角色。抽象狀態角色 state 定義乙個介面,用以封裝環境物件中的特定狀態所對應的行為。具體狀態角色 concrete state 實現抽象狀態所對應的行為。電梯執行系統,電...
設計模式C 實現(16) 狀態模式
分類 軟體設計模式c 實現 2011 08 11 08 45 50人閱讀收藏 舉報 軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式...