一、概述
定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

AbstractClass叫做抽象模板,它的方法分为两类:
(1)原始方法,是由子类实现的方法,并且在模板方法被调用
(2)模板方法,可以有一个或几个,实现对原始方法的调度,完成固定的逻辑
class AbstractClass
{
public:
virtual void PrimitiveOperation1();
virtual void PrimitiveOperation2();
void TemplateMethod()
{
PrimitiveOperation1();
//完成相关逻辑
PrimitiveOperation2();
}
};
class ConcreteClass1 : public AbstractClass
{
public:
virtual void PrimitiveOperation1()
{
//do something
}
virtual void PrimitiveOperation2()
{
//do something
}
};
class ConcreteClass2 : public AbstractClass
{
public:
virtual void PrimitiveOperation1()
{
//do something
}
virtual void PrimitiveOperation2()
{
//do something
}
};
二、使用场景
(1)多个子类有共有的方法,并且逻辑基本相同时
(2)重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现
本文详细介绍了模板方法设计模式的概念,通过定义算法框架并允许子类重定义特定步骤,实现复杂算法的灵活扩展。适用于多个子类共享相同逻辑场景。

被折叠的 条评论
为什么被折叠?



