1、什么叫做模板方法模式 ?
定义一个操作算法的的骨架(相当于那些操作步骤函数)(稳定),而将一些步骤(变化)延迟到子类中(定义一个虚函数,让子类重写)。
模板方法使得子类可以不改变一个算法的结构,即可以重定义(重写)该算法的某些特定步骤。
2、动机?
第一、在软件构建过程中对于某一项任务,它常常有(稳定)的整体操作结构。但各个子步骤却有很多改变的需求。
或者,由于固有的原因(比如框架和应用的关系),而无法和任务的整体结构同时实现。
第二、如何确定在稳定操作的结构下,来灵活应对各个子步骤的变化或者晚期实现需求。
"不要调用我,让我来调用你"
#include<iostream>
using namespace std;
class Libary{ //表示的是一个程序库 开发人员。
public:
void step01()
{
cout << "步骤1" << endl;
}
void step03()
{
cout << "步骤1" << endl;
}
void step05()
{
cout << "步骤1" << endl;
}
};
class application{
public:
bool setp02(){
return true;
}
void setp04(){
cout << "步骤4" << endl;
}
};
void main3(){
Libary lib;
application app;
lib.step01();
if (app.setp02()){
lib.step03();
}
for (int i = 0; i < 3; i++){
app.setp04();
}
lib.step05();
system("pause");
}
#include<iostream>
using namespace std;
/*
1、什么叫做模板方法模式 ?
定义一个操作算法的的骨架(相当于那些操作步骤函数)(稳定),而将一些步骤(变化)延迟到子类中(定义一个虚函数,让子类重写)。
模板方法使得子类可以不改变一个算法的结构,即可以重定义(重写)该算法的某些特定步骤。
2、动机?
第一、在软件构建过程中对于某一项任务,它常常有(稳定)的整体操作结构。但各个子步骤却有很多改变的需求。
或者,由于固有的原因(比如框架和应用的关系),而无法和任务的整体结构同时实现。
第二、如何确定在稳定操作的结构下,来灵活应对各个子步骤的变化或者晚期实现需求。
"不要调用我,让我来调用你"
*/
class Libary{ //表示的是一个程序库 开发人员。
public:
void run() //程序主流程 这个是晚绑定。 骨架 稳定 可以复用
{
step01();
if (step02()){ //变化----虚函数的多态调用
step03();
}
for (int i = 0; i < 3; i++){
step04();//变化----虚函数的多态调用
}
step05();
}
virtual ~Libary(){} //析构函数
protected:
void step01() //稳定
{
cout << "步骤1"<< endl;
}
void step05() //稳定
{
cout << "步骤5" << endl;
}
void step03() //稳定
{
cout << "步骤3" << endl;
}
virtual bool step02() = 0; //变化
virtual void step04() = 0; //变化
};
class application :public Libary{
bool step02()
{
return true;
}
void step04()
{
cout << "步骤4" << endl;
}
};
int main(){
Libary *lib=new application();
lib->run();
system("pause");
}