欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++設(shè)計(jì)模式之策略模式(Strategy)

 更新時(shí)間:2020年08月18日 11:20:01   作者:chencarl  
這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之策略模式Strategy ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

策略模式將不同算法的邏輯抽象接口封裝到一個(gè)類中,通過組合和多態(tài)結(jié)合的方式來進(jìn)行不同算法具體的實(shí)現(xiàn)。

作用

策略模式是一種定義一系列算法的方法,Strategy類層次為Context定義了一系列的可重用的算法或行為, 所有的算法以相同的方式進(jìn)行調(diào)用,減少了算法類之間的耦合

類視圖

實(shí)現(xiàn)

class Strategy
{
public:
 ~Strategy();
 virtual void AlgrithmInterface()=0;
protected:
 Strategy();
};

class ConcreteStrategyA : public Strategy
{
public:
 ConcreteStrategyA();
 ~ConcreteStrategyA();
 virtual void AlgrithmInterface();
};

class ConcreteStrategyB : public Strategy
{
public:
 ConcreteStrategyB();
 ~ConcreteStrategyB();
 virtual void AlgrithmInterface();
};

class Context
{
public:
 Context(Strategy*);
 ~Context();
 void DoAction();
private:
 Strategy* _strategy;
};

int main()
{
 //策略A與B可替換
 Strategy* pStra = new ConcreteStrategyA();
 Context* pCon = new Context(pStra);
 pCon->DoAction();

 pStra = new ConcreteStrategyB();
 pCon = new Context(pStra);
 pCon->DoAction();

 return 0;
}

Strategy模式和Template模式的根本區(qū)別是Strategy通過組合方式實(shí)現(xiàn)算法(實(shí)現(xiàn))的異構(gòu), 而Template模式則采取的是繼承的方式,這兩個(gè)模式的區(qū)別也是繼承和組合兩種實(shí)現(xiàn)接口重用的方式的區(qū)別。

Strategy模式和Bridge模式的區(qū)別是一個(gè)是行為模式,一個(gè)是對象的結(jié)構(gòu)模式,Strategy更偏向與不同算法的接口封裝實(shí)現(xiàn),其重點(diǎn)是在算法行為的實(shí)現(xiàn),一般為算法的擴(kuò)展;而Bridge更注重的是對象和實(shí)現(xiàn)的分離,對象和實(shí)現(xiàn)分別可進(jìn)行擴(kuò)展,兩者互不影響。相對Strategy模式,Bridge模式要表達(dá)的內(nèi)容要更多,結(jié)構(gòu)也更加復(fù)雜,而Strategy模式更像是Bridge模式的一部分實(shí)現(xiàn)方式。

應(yīng)用場景

當(dāng)有不同的算法和行為可供選擇,每種算法和行為可對應(yīng)一個(gè)類,且功能各不相同。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

  • QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡單消息傳輸

    QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡單消息傳輸

    這篇文章主要為大家詳細(xì)介紹了QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡單消息傳輸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++中const的常見用法詳解

    C++中const的常見用法詳解

    const名叫常量限定符,用來限定特定變量,以通知編譯器該變量是不可修改的,本文為大家整理了const的幾種使用,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-06-06
  • C++數(shù)組的定義詳情

    C++數(shù)組的定義詳情

    這篇文章主要介紹了C++數(shù)組的定義詳情,上一篇文章我們學(xué)習(xí)了類型,接下倆我們九在類型的基礎(chǔ)上展開本篇內(nèi)容數(shù)組的常用方法以及C++標(biāo)準(zhǔn)庫提供的一些關(guān)于數(shù)組的容器,需要的朋友可以參考一下,希望對你有所幫助
    2021-12-12
  • C語言數(shù)組超詳細(xì)講解中篇三子棋

    C語言數(shù)組超詳細(xì)講解中篇三子棋

    數(shù)組是一組有序的數(shù)據(jù)的集合,本篇將帶你結(jié)合數(shù)組來實(shí)現(xiàn)三子棋小游戲,上手實(shí)練更快的能夠掌握數(shù)組使用,感興趣的朋友來看看吧
    2022-04-04
  • C++使用文件實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    C++使用文件實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++使用文件實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • 使用Matlab繪制七夕咕呱小青蛙

    使用Matlab繪制七夕咕呱小青蛙

    七夕節(jié)到了還不快給你的朋友安排上這只咕呱小青蛙?本文將用Matlab繪制一個(gè)可愛的咕呱小青蛙,感興趣的小伙伴可以動(dòng)手嘗試一下
    2022-08-08
  • 利用C語言結(jié)構(gòu)體實(shí)現(xiàn)通訊錄

    利用C語言結(jié)構(gòu)體實(shí)現(xiàn)通訊錄

    這篇文章主要為大家詳細(xì)介紹了利用C語言結(jié)構(gòu)體實(shí)現(xiàn)通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C++實(shí)現(xiàn)猜數(shù)游戲

    C++實(shí)現(xiàn)猜數(shù)游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)猜數(shù)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 最新評論