设计模式之模板模式(C++)

这篇具有很好参考价值的文章主要介绍了设计模式之模板模式(C++)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

设计模式之模板模式(C++)

一、模板模式是什么?

       模板模式是一种行为型的软件设计模式,在父类中定义了一个模板算法,只实现模板中的公共部分,将可变部分放在子类中实现,不同的子类对同一模板有不同的扩展和实现。

       模板模式的优点:

  1. 良好复用性。父类中公共部分可以多次使用,具备好的环境适应性。
  2. 良好扩展性。子类对父类模板的具体实现作扩展。
  3. 符合开闭原则。基于模板扩展功能,不需要改动原有代码。

      模板模式的缺点:

  1. 类个数增加。基于模板的每个实现,都要定义一个子类,容易使代码量膨胀。
  2. 若父类模板有改动,则子类均要同步更改。

二、模板模式

2.1 结构图

       客户端即Main主函数,定义好模板框架,具体步骤的实现交给子类完成。

设计模式之模板模式(C++)

2.2 代码示例

       场景描述:我是一个电脑店的老板,给我的徒弟们培训了一个大致的电脑安装教程,徒弟根据不同品牌不同客户的需求,参照我的教程完成安装。

//Template.h
/****************************************************/
#pragma once
#include <iostream>
#include <unordered_map>
#include <vector>
#include <list>
#include <string>

using namespace std;

// 定义模板类-电脑
class Computer 
{
public:
	// 装配
	void install() {
		cout << "电脑安装开始。" << endl;
		cout << "电脑品牌为:" << getComputerType() << endl;
		installProcessor();
		installMemory();
		installCaliche();
		cout << "电脑安装结束。" << endl;
	}

private:
	// 获取电脑类型
	virtual string getComputerType() = 0;

	// 安装处理器
	virtual void installProcessor() = 0;

	// 安装内存
	virtual void installMemory() = 0;

	// 安装硬盘
	virtual void installCaliche() = 0;

};

// 实现具体模板类-惠普电脑
class HPComputer : public Computer 
{
private:
	// 获取电脑类型
	virtual string getComputerType() {
		return "惠普";
	}

	// 安装处理器
	virtual void installProcessor() {
		cout << "安装处理器:Inter 酷睿i7-1260P" << endl;
	}

	// 安装内存
	virtual void installMemory() {
		cout << "安装内存:32GB DDR4-3200MHz" << endl;
	}

	// 安装硬盘
	virtual void installCaliche() {
		cout << "安装硬盘:1TB SSD" << endl;
	}

};

// 实现具体模板类-戴尔电脑
class DellComputer : public Computer 
{
private:
	// 获取电脑类型
	virtual string getComputerType() {
		return "戴尔";
	}

	// 安装处理器
	virtual void installProcessor() {
		cout << "安装处理器:Inter 酷睿i7-1265U" << endl;
	}

	// 安装内存
	virtual void installMemory() {
		cout << "安装内存:16GB DDR4-3200MHz" << endl;
	}

	// 安装硬盘
	virtual void installCaliche() {
		cout << "安装硬盘:512GB SSD" << endl;
	}
};
//main.cpp
/****************************************************/
#include <iostream>
#include <string>
#include "Template.h"

using namespace std;

int main() 
{
	Computer *computerA = new HPComputer();
	Computer *computerB = new DellComputer();

	computerA->install();
	cout << endl;
	computerB->install();

	delete computerA;
	delete computerB;
	computerA = nullptr;
	computerB = nullptr;

	return 0;
}

       程序结果如下。

设计模式之模板模式(C++)

       看过我“建造者模式”篇的小伙伴应该会发现,这两篇举的例子都是安装电脑。但是建造者模式中有一个“监工”负责落实建造的具体步骤和顺序,而模板模式中是父类承担了这个职责。

三、总结

       我尽可能用较通俗的话语和直观的代码例程,来表述我对模板模式的理解,或许有考虑不周到的地方,如果你有不同看法欢迎评论区交流!希望我举的例子能帮助你更好地理解模板模式。

       如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!文章来源地址https://www.toymoban.com/news/detail-409630.html

到了这里,关于设计模式之模板模式(C++)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java设计模式 (一) 模板方法设计模式

    什么是模板方法设计模式? 模板方法设计模式是一种行为型设计模式,它定义了一个算法的骨架,并将一些步骤的具体实现延迟到子类中。模板方法模式可以帮助确保在算法的不同部分中保持一致性,同时也允许子类根据需要进行具体实现。 模板方法模式的关键特点包括:

    2024年02月12日
    浏览(31)
  • 设计模式行为型——模板模式

    目录 模板模式的定义 模板模式的实现 模板模式角色 模板模式类图 模板模式举例 模板模式代码实现 模板模式的特点 优点 缺点 使用场景 注意事项 实际应用         模板模式(Template Pattern)属于行为型设计模式,又叫模版方法模式(Template Method Pattern),是指定义一个算法

    2024年02月13日
    浏览(27)
  • 设计模式(13):模板方法模式

    实现一个功能时,整体步骤很固定,但是,某些部分易变。易变部分可以抽象出来,供子类实现。 非常繁琐,各个框架,类库中都有它的影子,比如常见的有: 数据库访问的封装 Junit单元测试 servlet中关于doGet/doPost方法调用 spring框架中各种Template shire中权限认证和授权都用到

    2024年04月16日
    浏览(33)
  • 设计模式(7)模板方法模式

    一、定义: 定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。

    2024年02月12日
    浏览(26)
  • 设计模式:模板模式和策略模式混合使用

    有时单个设计模式并不能满足我们的业务需求,这个时候就要根据具体的业务来混合使用设计模式,其中模板模式和策略模式是比较常用的一个组合。模板模式可以定义这个逻辑的骨架,策略模式可以丰满具体细节的逻辑。 这个示例中,我们定义了一个策略接口和两个策略实

    2024年02月07日
    浏览(29)
  • 设计模式(六):模板方法模式(行为型模式)

    Template Method,模板方法:定义一个操作中的算法的骨架,而将一 些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即 可以重定义该算法得某些特定步骤。 举例说明 奶茶制作过程,第一步加牛奶,第二步加糖,第三步加其他配料。第三步对于不同口味的奶

    2024年02月21日
    浏览(34)
  • 设计模式之模板模式(C++)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处        模板模式是一种行为型的软件设计模式,在父类中定义了一个模板算法,只实现模板中的公共部分,将可变部分放在子类中实现,不同的子类对同一模板有不同的

    2023年04月10日
    浏览(27)
  • js设计模式:模板方法模式

    父类定义一个整体的模板框架,将具体的方法行为定义到子类中。 模板方法主要是封装行为中的固定部分,同时允许子类对方法进行扩展

    2024年02月22日
    浏览(29)
  • 设计模式之八:模板方法模式

    泡咖啡和泡茶的共同点: 把水煮沸 沸水冲泡咖啡/茶叶 冲泡后的水倒入杯子 添加糖和牛奶/柠檬 在上面的代码种,prepareRecipe就是一个模板方法。 模板方法 定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现(依赖子类提供某些或所有步骤的实现,父类拥有并保护

    2024年02月11日
    浏览(31)
  • 设计模式【行为型】-- 模板方法模式

          模板方法模式是一种行为型设计模式,它定义了一个操作中的算法骨架,将一些步骤的具体实现延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模板方法模式基于一个抽象类或接口定义算法的骨架,该骨架由一个模板

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包