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語言深入刨析數(shù)據(jù)結(jié)構(gòu)之棧與鏈棧的設計與應用
棧是限定僅在表尾進行插入或刪除操作的線性表,表尾稱為棧頂(top),表頭稱為棧底(bottom)。棧的最主要特點就是“先進后出”(FILO),或“后進先出”(LIFO)。用鏈式存儲結(jié)構(gòu)表示的棧稱為“鏈?!?,鏈棧對應于鏈表2022-05-05
Java C++題解leetcode915分割數(shù)組示例
這篇文章主要為大家介紹了Java C++題解leetcode915分割數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
C語言數(shù)據(jù)結(jié)構(gòu)系列篇二叉樹的遍歷
本章將會詳細講解二叉樹遍歷的四種方式,分別為前序遍歷、中序遍歷、后續(xù)遍歷和層序遍歷。在學習遍歷之前,會先帶大家回顧一下二叉樹的基本概念2022-02-02
2022最新使用VSCode編譯運行C++的過程及會遇到的兩個問題
這篇文章主要介紹了2022最新使用VSCode編譯運行C++的過程及會遇到的兩個問題,這里需要注意把剛才解壓的地址加上\bin添加進去,比如我的:D:\aaakkk\cpp\mingw64\bin,然后點確定,注意一定要確保它被保存了,感興趣的朋友跟隨小編一起看看吧2022-09-09

