17 策略模式

2021-09-12 19:16:04 字數 978 閱讀 9538

策略模式是行為模式之一,它對一系列演算法加以封裝,為所有演算法定義乙個抽象的演算法介面,並通過繼承該抽象演算法介面對所有的演算法加以封裝和實現,具體的演算法呼叫交給客戶端決定。例如我們有乙個**模子,然後通過具體實現,可以通過這個模子製作出一把刀、一把槍、甚至是一顆原子彈。然後把製作好的**都交給客戶端,具體使用什麼**,完全交給客戶端決定。這就是策略模式。

優點:1、演算法可以自由切換。 2、避免使用多重條件判斷。 3、擴充套件性良好。

缺點:1、策略類會增多。 2、所有策略類都需要對外暴露。

類圖圖下:

示例**如下:

#include using namespace std;

/* 抽象**基類 */

class weaponstrategy

;/* 具體**子類-小刀 */

class knife:public weaponstrategy

};/* 具體**子類-ak47 */

class ak47 :public weaponstrategy

};/* 客戶端類 */

class people

/* 使用設定好的策略 */

void useweapon()

private:

weaponstrategy* pweapon;

};int main()

執行結果如下:

模式 策略模式

前言 所有的設計模式都是基於程式設計屆前輩們的不斷實踐得出的解決一類問題中比較有效高效的程式設計方法。策略模式 策略模式用於解決業務中不同場景下統一行為的細微差別問題。策略模式遵循 開閉原則 舉個例子來說,在購物車功能中,結算 的時候會根據使用者的不同級別去打折,那麼打折計算 的這一行為就會有不同演...

策略模式(策略列舉)

首先定義乙個介面 package com.yecc.suanfa.strategy created by yecc on 2020 11 16 19 35 public inte ce strategy 定義三個繼承介面的類 package com.yecc.suanfa.strategy crea...

17 命令模式

命令模式 1 定義 將乙個請求封裝為乙個物件,從而可用不同的請求對客戶進行引數化 對請求排隊或記錄日誌,以及支援可撤銷的操作 2 結構圖 客戶端 client 角色 建立乙個具體命令 concretecommand 物件並確定其接收者。命令 command 角色 宣告了乙個給所有具體命令類的抽象介面...