父类已经提供好了算法模板,子类负责具体实现各步算法。在使用TemplateMethod模式时一定对算法的分析很透彻,不然模板定下来,一旦改变就很困难了。
TemplateMethod模式在Android框架中使用的很多。例如Activity对象的几个状态。
其中就定义了onCreate(),onStart()等等方法。
下面是类图
代码实现
#ifndef ABSTRACTCLASS_H
#define ABSTRACTCLASS_H
class AbstractClass
{
public:
AbstractClass();
virtual ~AbstractClass() = 0;
void templateMethod();
protected:
virtual void method_1() = 0;
virtual void method_2() = 0;
};
#endif // ABSTRACTCLASS_H
#include "abstractclass.h"
AbstractClass::AbstractClass()
{
}
AbstractClass::~AbstractClass()
{
}
void AbstractClass::templateMethod()
{
method_1();
method_2();
}
#ifndef CONCREATECLASS_1_H
#define CONCREATECLASS_1_H
#include "abstractclass.h"
class ConcreateClass : public AbstractClass
{
public:
ConcreateClass();
~ConcreateClass(){}
protected:
void method_1();
void method_2();
};
#endif // CONCREATECLASS_1_H
#include "concreateclass.h"
#include <iostream>
using namespace std;
ConcreateClass::ConcreateClass()
{
}
void ConcreateClass::method_1()
{
cout << "method_1\n";
}
void ConcreateClass::method_2()
{
cout <<"method_2\n";
}
#include <iostream>
using namespace std;
#include "concreateclass.h"
int main()
{
AbstractClass *p = new ConcreateClass;
p->templateMethod();
delete p;
return 0;
}