Template Method(模板方法)
Template Method模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。它用最简洁的机制(虚函数的多态性)为很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构
除了可以灵活应对子步骤的变化外,“不要调用我,让我来调用你”的反向控制结构是Template Method的典型应用。
代码:更改前
class Library{
public:
void step1(){
//...
};
void step3(){
//...
};
void step5(){
//...
};
};
class Application{
public:
bool step2(){
//...
};
void step4(){
//...
};
};
int main(){
Library lib;
Application app;
lib.step1();
if (app.step2()){
lib.step3();
}
for (int i = 0; i < 4; ++i)
app.step4();
lib.step5();
}
代码:更改后
class Library{
protected:
void step1(){
//...
};
void step3(){
//...
};
void step5(){
//...
};
virtual bool step2() = 0;
virtual void step4() = 0;
virtual ~Library(){};
};
class Application:Library{
protected:
bool step2() override {
//...
};
void step4() override{
//...
};
public:
void run(){
step1();
if (step2()) step3();
for (int i = 0; i < 4; ++i) step4();
step5();
}
};
int main(){
Application app;
app.run();
}