简介
- 对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现(变化),但是逻辑的框架是相同的(稳定)。
- 模板方法模式是一种代码复用技术
有许多模式都和模板模式非常相似,用的都是相同的手法。
将变化的部分延迟到子类中实现(将稳定的部分放到抽象类中,将变化的实现细节延时的子类中实现,这是模板模式最核心的思想,有许多其他模式也是使用这样的思想)
代码实现
#include <iostream>
using namespace std;
//抽象模板
class Template
{
public:
virtual ~Template(){};
virtual void Step1() = 0;
virtual void Step2() = 0;
virtual void Step3() = 0;
void Run()
{
Step1();
for (int i = 0; i < 3; i++)
Step2();
Step3();
}
protected:
Template(){};
};
class Myclass1 : public Template
{
public:
Myclass1(){};
~Myclass1(){};
void Step1(){ cout << "Myclass1 Step1" << endl; }
void Step2(){ cout << "Myclass1 Step2" << endl; }
void Step3(){ cout << "Myclass1 Step3" << endl; }
};
class Myclass2 : public Template
{
public:
Myclass2(){};
~Myclass2(){};
void Step1(){ cout << "Myclass2 Step1" << endl; }
void Step2(){ cout << "Myclass2 Step2" << endl; }
void Step3(){ cout << "Myclass2 Step3" << endl; }
};
#include <iostream>
#include "Template.h"
using namespace std;
int main()
{
Myclass1 class1;
Myclass1 class2;
class1.Run();
cout << "*********************" << endl;
class2.Run();
while (1);
return 0;
}
本文介绍了模板方法模式,一种通过将稳定的代码放在抽象类中,变化部分留给子类实现的代码复用策略。通过Myclass1和Myclass2实例展示了如何在不同对象中应用该模式。

被折叠的 条评论
为什么被折叠?



