狀態模式:允許乙個物件在其內部狀態改變時改變它的行為。
物件看起來似乎修改了它的類。
它有兩種使用情況:
(1)乙個物件的行為取決於它的狀態, 並且它必須在執行時刻根據狀態改變它的行為。
(2)乙個操作中含有龐大的多分支的條件語句,且這些分支依賴於該物件的狀態。
案例:英雄聯盟傑斯切換形態攻擊
#include using namespace std;
class jayce;
class jaycestate
;// 大炮形態
class cannonstate : public jaycestate
void attack()
private:
jayce* pcannon;
};// 錘子形態
class hammerstate : public jaycestate
void attack()
private:
jayce* phammer;
};// 傑斯
class jayce
~jayce()
void use_cannon()
void use_hammer()
void attack()
private:
cannonstate* pcannon;
hammerstate* phammer;
jaycestate* pjayce;
};void test_01()
int main()
17 命令模式
命令模式 1 定義 將乙個請求封裝為乙個物件,從而可用不同的請求對客戶進行引數化 對請求排隊或記錄日誌,以及支援可撤銷的操作 2 結構圖 客戶端 client 角色 建立乙個具體命令 concretecommand 物件並確定其接收者。命令 command 角色 宣告了乙個給所有具體命令類的抽象介面...
17 策略模式
策略模式是行為模式之一,它對一系列演算法加以封裝,為所有演算法定義乙個抽象的演算法介面,並通過繼承該抽象演算法介面對所有的演算法加以封裝和實現,具體的演算法呼叫交給客戶端決定。例如我們有乙個 模子,然後通過具體實現,可以通過這個模子製作出一把刀 一把槍 甚至是一顆原子彈。然後把製作好的 都交給客戶端...
組合模式 17
將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性,重點在於一致性,介面的一致性,這樣就能大量減少 裡的各種if else.組合模式,是為了解決整體和部分的一致對待的問題而產生的,要求這個整體與部分有一致的操作或行為。部分和整體都繼承於乙個公共...