模板方法模式
定义: 定义一个操作中的算法的框架, 而将一些步骤延迟到子类中。 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
// template class
class templateClass
{
public:
templateClass() {}
virtual ~templateClass() {}
public:
void templateMethod() {
doSomething();
}
protected:
virtual void doSomething() = 0;
};
// concrete class 1
class concreteClass1: public templateClass
{
public:
concreteClass1() {}
~concreteClass1() {}
protected:
virtual void doSomething() {
cout << "concreteClass1" << endl;
}
};
// concrete class 2
class concreteClass2 :public templateClass
{
public:
concreteClass2() {}
~concreteClass2() {}
protected:
virtual void doSomething() {
cout << "concreteClass2" << endl;
}
};
void test_templateClass(){
templateClass* class1 = new concreteClass1();
templateClass* class2 = new concreteClass2();
class1->templateMethod();
class2->templateMethod();
delete class1;
delete class2;
}