1、模板方法模式

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");

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值