1.模板模式简介
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
2.源码实现
#include <iostream>
#include <string>
using namespace std;
class AbstractClass
{
public:
virtual void PrimitiveOperation1() = 0;
virtual void PrimitiveOperation2() = 0;
void TemplateMethod();
virtual ~AbstractClass(){};
};
class ConcreteClass1 : public AbstractClass
{
public:
virtual void PrimitiveOperation1();
virtual void PrimitiveOperation2();
~ConcreteClass1(){};
};
class ConcreteClass2 : public AbstractClass
{
public:
virtual void PrimitiveOperation1();
virtual void PrimitiveOperation2();
~ConcreteClass2(){};
};
void AbstractClass::TemplateMethod()
{
//模板方法定义算法骨架
PrimitiveOperation1();
PrimitiveOperation2();
}
void ConcreteClass1::PrimitiveOperation1()
{
cout << "方法1算法步骤1" << endl;
}
void ConcreteClass1::PrimitiveOperation2()
{
cout << "方法1算法步骤2" << endl;
}
void ConcreteClass2::PrimitiveOperation1()
{
cout << "方法2算法步骤1" << endl;
}
void ConcreteClass2::PrimitiveOperation2()
{
cout << "方法2算法步骤2" << endl;
}
int main(int argc, char **argv)
{
AbstractClass *AC1 = new ConcreteClass1();
AbstractClass *AC2 = new ConcreteClass2();
AC1->TemplateMethod();
AC2->TemplateMethod();
delete AC1;
delete AC2;
return 0;
}
3.编译源码
$ g++ -o example example.cpp
4.运行及其结果
$ ./example
方法1算法步骤1
方法1算法步骤2
方法2算法步骤1
方法2算法步骤2
网友评论