最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++設計模式之模板方法模式(TemplateMethod)

 更新時間:2018年04月07日 11:05:18   作者:chencarl  
這篇文章主要為大家詳細介紹了C++設計模式之模板方法模式TemplateMethod,具有一定的參考價值,感興趣的小伙伴們可以參考一下

模板方法模式使用繼承來實現(xiàn)模式的功能,在基類使用一個方法來定義算法的各個步驟,這些步驟(方法)的具體實現(xiàn)會放到子類中,通過這樣來實現(xiàn)不同算法對象的算法拼合,完成該對象整體算法的實現(xiàn)。

作用

模板方法中定義了具體操作中所使用算法的各個步驟,并將其實現(xiàn)交由子類完成,從而實現(xiàn)多種不同的功能;

類視圖

實現(xiàn)

class Lunch
{
public:
  Lunch(){}
  virtual ~Lunch(){}

  void feed()
  {
    cooking();
    eating();
    cleaning();
  }
  virtual void cooking()=0;
  virtual void eating()
  {
    cout<<"I am eating,Please don't disturb me\n";
  }
  virtual void cleaning();
};


class MCMeal : public Lunch
{
public:
  MCMeal(){}
  virtual ~MCMeal(){}

  void cooking()
  {
    cout<< "I am cooking Mc Meal\n";
  }
  void cleaning()
  {
    cout<< "I am cleaning Mc plates";
  }
};

class KFCMeal : public Lunch
{
public:
  KFCMeal() {}
  virtual ~KFCMeal(){}

  void cooking()
  {
    cout<< "I am cooking KFC Meal\n";
  }
  void eating
  {
    cout<< "KFC Meal is good\n";
  }
  void cleaning()
  {
    cout<< "I am cleaning KFC plates and cups\n";
  }
};


int main()
{
  Lunch* meal1 = new McMeal();
  meal1.feed();
  Lunch* meal2 = new KFCMeal();
  meal2.feed();
}

應用場景

  • 當一個算法功能需要能夠改變,并通過在子類中對功能重寫來實現(xiàn)這種變化;
  • 當算法能夠?qū)崿F(xiàn)統(tǒng)一步驟,并且可以劃分不變部分和可變部分,將可變互粉在子類中實現(xiàn)算法不同的變化;

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

相關文章

  • C語言?for循環(huán)示例詳解

    C語言?for循環(huán)示例詳解

    本文將詳細介紹for循環(huán)的用法并提供相關的可編譯運行的C代碼示例,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,感興趣的朋友一起看看吧
    2023-06-06
  • C語言的預處理介紹

    C語言的預處理介紹

    大家好,本篇文章主要講的是C語言的預處理介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • swift Character類型詳解及實例

    swift Character類型詳解及實例

    這篇文章主要介紹了 swift Character類型詳解及實例的相關資料,需要的朋友可以參考下
    2017-06-06
  • C語言深入刨析數(shù)據(jù)結(jié)構(gòu)之棧與鏈棧的設計與應用

    C語言深入刨析數(shù)據(jù)結(jié)構(gòu)之棧與鏈棧的設計與應用

    棧是限定僅在表尾進行插入或刪除操作的線性表,表尾稱為棧頂(top),表頭稱為棧底(bottom)。棧的最主要特點就是“先進后出”(FILO),或“后進先出”(LIFO)。用鏈式存儲結(jié)構(gòu)表示的棧稱為“鏈?!?,鏈棧對應于鏈表
    2022-05-05
  • C++實現(xiàn)掃雷程序開發(fā)

    C++實現(xiàn)掃雷程序開發(fā)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)掃雷程序開發(fā),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Java C++題解leetcode915分割數(shù)組示例

    Java C++題解leetcode915分割數(shù)組示例

    這篇文章主要為大家介紹了Java C++題解leetcode915分割數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • C語言基本概念宏定義中的#和##教程

    C語言基本概念宏定義中的#和##教程

    這篇文章主要為大家介紹了C語言基本概念宏定義中的#和##教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • C語言數(shù)據(jù)結(jié)構(gòu)系列篇二叉樹的遍歷

    C語言數(shù)據(jù)結(jié)構(gòu)系列篇二叉樹的遍歷

    本章將會詳細講解二叉樹遍歷的四種方式,分別為前序遍歷、中序遍歷、后續(xù)遍歷和層序遍歷。在學習遍歷之前,會先帶大家回顧一下二叉樹的基本概念
    2022-02-02
  • 2022最新使用VSCode編譯運行C++的過程及會遇到的兩個問題

    2022最新使用VSCode編譯運行C++的過程及會遇到的兩個問題

    這篇文章主要介紹了2022最新使用VSCode編譯運行C++的過程及會遇到的兩個問題,這里需要注意把剛才解壓的地址加上\bin添加進去,比如我的:D:\aaakkk\cpp\mingw64\bin,然后點確定,注意一定要確保它被保存了,感興趣的朋友跟隨小編一起看看吧
    2022-09-09
  • c語言指針之二級指針示例

    c語言指針之二級指針示例

    這篇文章主要介紹了c語言指針中的二級指針示例,需要的朋友可以參考下
    2014-04-04

最新評論

都江堰市| 明溪县| 宜都市| 炎陵县| 广德县| 宣汉县| 郧西县| 玉林市| 永顺县| 易门县| 拉萨市| 北安市| 建始县| 安福县| 梁山县| 临高县| 岳阳市| 通江县| 松江区| 铜山县| 祁阳县| 常德市| 甘洛县| 前郭尔| 铁岭市| 肥乡县| 逊克县| 门源| 巴林右旗| 惠州市| 新野县| 绍兴县| 吉林省| 松潘县| 沧州市| 马龙县| 车致| 江阴市| 延边| 清丰县| 岳阳县|