模板方法原理与C++实现
创始人
2024-12-26 13:34:59
0

定义

定义一个操作中的算法骨架(稳定的),而将一些步骤的实现延迟到子类中(变化的)。模板方法使得子类可以复用一个算法的结构,而只改变(重写)这个算法的特定步骤。

C++实现

class Library { public: 	virtual ~Library() {} 	// template method 	void run()  	{ 		step1(); 		step2(); 		step3(); 	} protected: 	virtual void step1() = 0; 	virtual void step2() = 0; 	void step3()  	{ 		// stable method, do something 	} };  class ConcretLibrary : public Library{ protected: 	void step1()  	{ 		// do something 	} 	void step2() 	{ 		// do something 	} };  void main() { 	ConcretLibrary lb; 	lb.run(); } 

类图

请添加图片描述

对比类图和C++实现,其中TemplateMethod就是模板方法,它是子类可以复用的算法结构。对于特定步骤step1、step2他们都是变化的,所以延迟到子类进行实现。

总结
  • 模板方法是一种非常实用且常见的设计模式,它使用简单的机制(虚函数)为应用程序框架提供了灵活的扩展点。
  • 模板方法中被模板方法调用的虚函数可以有具体实现,也可以没有任何实现(纯虚函数),但一般访问权限为protected,因为作为算法的一部分,它没有对外单独开放的必要。

相关内容

热门资讯

透视安装!约局吧开挂,福建大玩... 透视安装!约局吧开挂,福建大玩家透视,演示辅助方法(有挂规律)-哔哩哔哩1、这是跨平台的福建大玩家透...
据悉!芒果辅助器,真是真的有辅... 据悉!芒果辅助器,真是真的有辅助app(有挂技巧)-哔哩哔哩1、任何芒果辅助器透视是真的假的的玩家都...
透视玄学!pokerworld... 透视玄学!pokerworld修改器,杭州都莱辅助软件,讲义辅助插件(有挂技巧)-哔哩哔哩1、透视玄...
随着!潮汕老友麻将开挂,都是存... 随着!潮汕老友麻将开挂,都是存在有辅助插件(真的有挂)-哔哩哔哩所有人都在同一条线上,像星星一样排成...
透视新版!红龙poker辅助器... 透视新版!红龙poker辅助器免费观看,蜀山四川智能辅助插件,学习辅助神器(有挂方针)-哔哩哔哩1、...
有了最新消息!邯郸胡乐修改器,... 有了最新消息!邯郸胡乐修改器,一直真的是有辅助平台(有挂工具)-哔哩哔哩1、打开软件启动之后找到中间...
透视中牌率!pokerworl... 您好,微乐小程序卡五星脚本这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】很...
连日来!乐趣江苏破解器,本来有... 连日来!乐趣江苏破解器,本来有挂辅助安装(有挂解惑)-哔哩哔哩1)乐趣江苏破解器辅助插件:进一步探索...
2026版技巧!拱趴大菠萝辅助... 2026版技巧!拱趴大菠萝辅助神器,拱趴大菠萝万能辅助器,方式辅助器(有挂详细)-哔哩哔哩1)拱趴大...
来临!光明大厅透视辅助,原来有... 来临!光明大厅透视辅助,原来有挂辅助平台(有挂透视)-哔哩哔哩1、上手简单,内置详细流程视频教学,新...