17 狀態模式

2021-09-11 23:57:02 字數 881 閱讀 4654

狀態模式:允許乙個物件在其內部狀態改變時改變它的行為。

物件看起來似乎修改了它的類。

它有兩種使用情況:

(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.組合模式,是為了解決整體和部分的一致對待的問題而產生的,要求這個整體與部分有一致的操作或行為。部分和整體都繼承於乙個公共...