应用场景:在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现) 在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。 Template 提供了这种情况的一个实现框架。
Template模式是采用继承的方式作为强制约束实现这一点:将逻辑(算法)框架放在抽象基类中, 并定义好细节的接口,子类中实现细节。
Strategy 模式解决的是和 Template 模式类似的问题;Strategy 模式是将逻辑(算法)封装到一个类中,并采取组合(委托)的方式解决这个问题。
- Template模式:
实现:
- Template.h
#ifndef _TEMPLATE_H_
#define _TEMPLATE_H_
class AbstractClass
{
public:
virtual ~AbstractClass();
void TemplateMethod();
protected:
virtual void PrimitiveOperation1() = 0;
virtual void PrimitiveOperation2() = 0;
AbstractClass();
private:
};
class ConcreteClass1:public AbstractClass
{
public:
ConcreteClass1();
~ConcreteClass1();
protected:
void PrimitiveOperation1();
void PrimitiveOperation2();
private:
};
class ConcreteClass2:public AbstractClass
{
public:
ConcreteClass2();
~ConcreteClass2();
protected:
void PrimitiveOperation1();
void PrimitiveOperation2();
private:
};
#endif