模板方法模式

官方定义:
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

自己的思考:
模板方法是把一个确定不变的行为过程转移到基类,并在基类中定义确定的行为步骤,将不确定的行为利用虚函数机制,在子类中进行覆写(override),从而实现不变行为的代码复用,(早绑定 vs 晚绑定)。

UML类图:
在这里插入图片描述
代码实现:

#include<iostream>

//库函数,函数底层代码块
class Library {
protected:
	void Step1() {
		//代码实现(稳定的);
	};
	void Step3() {
		//代码实现(稳定的);
	}
	void Step5() {
		//代码实现(稳定的);
	}

	virtual bool Step2() = 0; //可变不稳定的,将实现延迟到子类中
	virtual void Step4() = 0; //可变不稳定的,将实现延迟到子类中

public:
	// 算法的骨架,流程是确定的
	void Methed() {
		Step1();
		if (Step2())
			Step3();
		Step4();
		for (int i = 0; i < 4; i++)
			Step5();
	}
	//基类解析函数定义为虚函数,目的是正确调用派生类析构顺序
	virtual ~Library() {}
};

//应用程序块
class Aplication:public Library {
protected:
	virtual bool Step2() {
		//代码实现
	}
	virtual void Step4() {
		//代码实现
	}
};

int main() {
	Library* test = new Aplication;
	test->Methed();
	delete test;
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值