模板方法模式
某一项任务有稳定的整体操作结构,但是各个子结构却有很多需要改变的需求,如何在确定稳定操作的结构的前提下灵活的应对各个子步骤的变化或者晚期实现需求。
将一些步骤延迟到子类,模板方法模式使得子类可以服用一个算法结构,可重定义,支持子类的变化。如果算法的骨架不稳定这个模板方法就不适用。不要调用我 让我来调用你。
模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使 子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。
#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;
}
本文深入探讨了模板方法模式,一种行为型设计模式,用于在不改变算法结构的情况下允许子类重新定义算法的某些步骤。通过实例说明了如何使用抽象类定义算法骨架,并由子类实现细节,展示了该模式在不同子类间共享算法结构的灵活性。
1689

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



