class AbstractClass
{
public:
void templateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
}
virtual void PrimitiveOperation1()=0;
virtual void PrimitiveOperation2()=0;
};
class ConcreteClass : public AbstractClass
{
public:
void PrimitiveOperation1() {cout<<"ConcreteClass::PrimitiveOperation1()"<<endl;}
void PrimitiveOperation2() {cout<<"ConcreteClass::PrimitiveOperation2()"<<endl;}
};
int _tmain(int argc, _TCHAR* argv[])
{
AbstractClass *pConcrete=new ConcreteClass();
pConcrete->templateMethod();
delete pConcrete;
pConcrete=NULL;
return 0;
}
以上是一个template mothed的小例子。
此种模式的意图是定义个操作中的算法的骨架,而将一些步骤延迟到子类中。template method使得子类可以不改变一个算法的结构而重新定义该算法某些特定步骤。
Template method模式的结构图如下: