模板模式
在GOF的《设计模式:可复用面向对象软件的基础》一书中对模板方法模式是这样说的:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的接口即可重定义改算法的某些特定步骤。
#include<iostream>
using namespace std;
class MakeCar{
public:
virtual void MakeHead() = 0;
virtual void MakeBody() = 0;
virtual void MakeTail() = 0;
void make()//模板函数,已经设计好了执行顺序
{
MakeHead();
MakeBody();
MakeTail();
}
};
class Jeep :public MakeCar{
public:
void MakeHead()
{
cout << "jeep车头\n";
}
void MakeBody()
{
cout << "jeep车身\n";
}
void MakeTail()
{
cout << "jeep车尾\n";
}
};
class BMW :public MakeCar{
public:
void MakeHead()
{
cout << "BMW车头\n";
}
void MakeBody()
{
cout << "BMW车身\n";
}
void MakeTail()
{
cout << "BMW车尾\n";
}
};
void main()
{
MakeCar *m_car = new Jeep();
m_car->make();
delete m_car;
m_car = new BMW();
m_car->make();
system("pause");
}
结果: