模板方法模式
某一项任务有稳定的整体操作结构,但是各个子结构却有很多需要改变的需求,如何在确定稳定操作的结构的前提下灵活的应对各个子步骤的变化或者晚期实现需求。
将一些步骤延迟到子类,模板方法模式使得子类可以服用一个算法结构,可重定义,支持子类的变化。如果算法的骨架不稳定这个模板方法就不适用。不要调用我 让我来调用你。
模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使 子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。
#include <iostream>
using namespace std;
class Car
{
public:
virtual ~Car(){}
virtual void producteEngine()=0;
virtual void producteBody()=0;
virtual void producteTire()=0;
void product()
{
producteEngine();
producteBody();
producteTire();
}
};
class CarFactoryJeep : public Car
{
public:
virtual void producteEngine()
{
std::cout << "product engine Jeep" << std::endl;
}
virtual void producteBody()
{
std::cout << "product Body Jeep" << std::endl;
}
virtual void producteTire()
{
std::cout << "product Tire Jeep" << std::endl;
}
};
class CarFactoryBus : public Car
{
public:
virtual void producteEngine()
{
std::cout << "product engine bus" << std::endl;
}
virtual void producteBody()
{
std::cout << "product Body bus" << std::endl;
}
virtual void producteTire()
{
std::cout << "product Tire bus" << std::endl;
}
};
int main()
{
Car *car = new CarFactoryJeep();
car->product();
delete car;
car = NULL;
return 0;
}