模板方法模式是指在一个方法中定义一个算法的骨架, 将一些步骤延迟到子类中
模板方法使得子类可以在不改变算法结构的情况下, 重新定义算法中的某些步骤
抽象方法由子类实现
这样可以确保算法的结构不变, 由子类提供部分实现
策略模式和模板方法模式都封装算法, 一个用组合, 一个用继承
#ifndef TemplateMethod_h
#define TemplateMethod_h
class AbstractClass
{
public:
void templateMethod()
{
primitiveOperation1();
primitiveOperation2();
}
virtual void primitiveOperation1() = 0;
virtual void primitiveOperation2() = 0;
};
class ConcreteClass : public AbstractClass
{
public:
virtual void primitiveOperation1()
{
printf("ConcreteClass primitiveOperation1.\n");
}
virtual void primitiveOperation2()
{
printf("ConcreteClass primitiveOperation2.\n");
}
};
#endif
测试
#include <iostream>
#include "TemplateMethod.h"
int main(int argc, char **argv)
{
ConcreteClass c;
c.templateMethod();
return 0;
}