声明:本博文篇幅短,适合review。
一、概念
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
二、模式结构图
class AbstractClass
{
public:
virtual ~AbstractClass();
void templateMethod(){
this->primitive1();
this->primitive2();
}
protected:
virtual void primitive1() = 0;
virtual void primitive2() = 0;
AbstractClass();
};
class ConcreteClass1 : public AbstractClass
{
public:
ConcreteClass1();
~ConcreteClass1();
protected:
void primitive1();
void primitive2();
};
class ConcreteClass2 : public AbstractClass
{
public:
ConcreteClass2();
~ConcreteClass2();
protected:
void primitive1();
void primitive2();
};
void main(){
AbstractClass * p1 = new ConcreteClass1();
AbstractClass * p2 = new ConcreteClass2();
p1->templateMethod();
p2->templateMethod();
}