- 模板方法模式:一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
- 主要角色:
- 抽象父类
- 具体子类
- 客户端
#include <iostream>
using namespace std;
/*
* 模版方法模式
* 将一组方法封装起来,隐藏实现细节,提供一个接口
* */
class CarFactory {
public:
virtual ~CarFactory() {}
virtual void produteEngine() = 0;
virtual void produteBody() = 0;
virtual void produteTire() = 0;
void produte() {
produteEngine();
produteBody();
produteTire();
}
};
class CarFactoryJeep: public CarFactory {
public:
virtual void produteEngine() {
cout << "produte engine jeep" << endl;
}
virtual void produteBody() {
cout << "produte body jeep" << endl;
}
virtual void produteTire() {
cout << "produte tire jeep" << endl;
}
};
class CarFactoryBus: public CarFactory {
public:
virtual void produteEngine() {
cout << "produte engine bus" << endl;
}
virtual void produteBody() {
cout << "produte body bus" << endl;
}
virtual void produteTire() {
cout << "produte tire bus" << endl;
}
};
int main() {
CarFactory* fac = new CarFactoryJeep;
fac->produte();
delete fac;
fac = new CarFactoryBus;
fac->produte();
delete fac;
return 0;
}
GOF设计模式C++实例: