Template Method模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类忠。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
class AbstractClass
{
public:
AbstractClass();
virtual ~AbstractClass();
void TemplateMethod();
protected:
virtual void PrimitiveOperation1();
virtual void PrimitiveOperation2();
};
void AbstractClass::TemplateMethod() {
PrimitiveOperation1();
PrimitiveOperation2();
}
class ConcreateClass: public AbstractClass {
public:
ConcreateClass(){}
virtual ~ConcreateClass();
protected:
virtual void PrimitiveOperation1();
virtual void PrimitiveOperation2();
};
void Test() {
AbstractClass* obj = new ConcreateClass();
obj->TemplateMethod();
delete obj;
}
PS. 我的设计模式系列blog, 《设计模式》专栏,通过简单的示例演示设计模式,对于初学者很容易理解入门。深入学习请看GoF的《设计模式》。