**寫的不夠規範,目的是為了縮短篇幅,實際中請不要這樣做
參看:1、概述
這個有點抽象,我的理解是: 行為受到狀態的變化而變化。舉乙個例子,籃球員動員,如果運動員這會兒狀態好,命中率(投球)就會上公升。再比如人的情緒變化,可能會導致不同的行為。比如高興,是動作a,猶豫,動作b。
需要用的角色,主要分為2類,a、狀態(state),b、上下文(context)。
2、抽象狀態
//3、狀態有多種,下面舉例用到了2個a和b:抽象狀態
class
oct_state
;
//4、上下文(context)狀態aclass oct_state_a : public
oct_state
std::
string to_str()
};//
狀態b
class oct_state_b : public
oct_state
std::
string to_str()
};
class5、呼叫oct_context
oct_state * get_state()
private
: oct_state *_pstate =nullptr;
};
16、結果:void
call_state()213
14//
1、進入狀態a
15 std::cout << "
\n1、進入狀態a\n";
16 pstateb->do_action(pcontext.get
());
1718 std::cout << "
\n上下文輸出:
"<< pcontext->get_state()->to_str().c_str() <
1920
//2、進入狀態b
21 std::cout << "
\n\n\n\n-----------------------------------\n2、進入狀態b\n";
22 pstateb->do_action(pcontext.get
());
23 std::cout << "
\n上下文輸出:
"<< pcontext->get_state()->to_str().c_str() <
24 }
C 設計模式 之 設計模式概述
一,為什麼學習設計模式?二,什麼是設計模式?三,怎麼描述設計模式?四,設計模式有哪幾類?五,設計模式之間的關係?六,學習設計模式的四種狀態 作為攻城獅 設計模式 這個詞應該都不陌生,那麼,你有靜下心來系統的學習它一下嗎?本系列博文描述了物件導向設計模式的實現。之所以取名為 c 設計模式,是因為我在文...
C 設計模式之狀態模式
狀態模式,當乙個物件的內在狀態改變時,語序改變其行為,這個物件看起來像是改變了其類 include using namespace std class state class forenoon class noon class afternonn class evening class gohome...
(C )設計模式之狀態模式
1.狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起像是改變了其類。狀態模式主要解決的是當控制乙個物件的狀態轉換的條件表示式過於複雜時,可以將狀態的判斷邏輯轉移到表示不同狀態的一系列類中,將複雜的判斷邏輯簡化。將特定與狀態相關的行為區域性化,並且將不同狀態的行為分割開來。當乙個物件的...