C++設計模式之模板方法模式(TemplateMethod)
更新時間:2018年04月07日 11:05:18 作者:chencarl
這篇文章主要為大家詳細介紹了C++設計模式之模板方法模式TemplateMethod,具有一定的參考價值,感興趣的小伙伴們可以參考一下
模板方法模式使用繼承來實現模式的功能,在基類使用一個方法來定義算法的各個步驟,這些步驟(方法)的具體實現會放到子類中,通過這樣來實現不同算法對象的算法拼合,完成該對象整體算法的實現。
作用
模板方法中定義了具體操作中所使用算法的各個步驟,并將其實現交由子類完成,從而實現多種不同的功能;
類視圖

實現
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();
}
應用場景
- 當一個算法功能需要能夠改變,并通過在子類中對功能重寫來實現這種變化;
- 當算法能夠實現統一步驟,并且可以劃分不變部分和可變部分,將可變互粉在子類中實現算法不同的變化;
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

