模板模式

Template Method模式也叫模板方法模式,是行为模式之一,它具有把特定的步骤算法中的某些必要的处理委让给抽象方法,通过子类继承抽象方法的不同实现改变整个算法的行为。

使用场景

  • 具有统一的操作步骤或者操作过程
  • 具有不同的操作细节
  • 存在多个具有同样操作步骤的应用场景,某些具体的操作细节却各不相同

在抽象类中统一操作步骤,并规定好接口,让子类实现接口,这样可以把各个具体的子类实现操作步骤解耦合

AbstractClass

抽象类的父类

ConcreteClass

具体的实现子类

templateMethod():

模板方法

method1method2()

具体操作方法

代码实现:

//
// Created by andrew on 2020/11/22.
//
#include <iostream>using namespace std;class MakeCar {public:virtual ~MakeCar() = default;virtual void MakeHead() = 0;virtual void MakeBody() = 0;virtual void MakeTail() = 0;public:void Make() // 模板函数,把业务逻辑给做好{MakeTail();MakeBody();MakeHead();}
};// 只去实现具体过程,逻辑流程由父类进行规定
class Jeep : public MakeCar {public:virtual void MakeHead() {cout << "jeep head" << endl;}virtual void MakeBody() {cout << "jeep body" << endl;}virtual void MakeTail() {cout << "jeep tail" << endl;}
};class Bus : public MakeCar {public:virtual void MakeHead() {cout << "bus head" << endl;}virtual void MakeBody() {cout << "bus body" << endl;}virtual void MakeTail() {cout << "bus tail" << endl;}
};int main(int argc, char *argv[]) {MakeCar *car = new Bus;car->Make();delete car;MakeCar *car2 = new Jeep;car2->Make();delete car2;return 0;
}

23种设计模式C++源码与UML实现--模板模式相关推荐

  1. 23种设计模式C++源码与UML实现--外观模式

    外观模式 facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种,facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单界面.这个一致的简单的界面被称为fac ...

  2. 23种设计模式C++源码与UML实现--建造者模式

    建造者模式 代码仓库地址:建造者模式 Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种.Builder模式是一种对象创建模式之一,用来隐藏复合对象的创建过程.他把 ...

  3. 23种设计模式C++源码与UML实现--迭代器模式

    迭代器模式 Iterator模式也叫迭代模式,是行为模式之一,他把对容器种包含的内部对象的访问委让给外部类,使用Iterator按顺序进行遍历访问的设计模式. 在使用Iterator模式之前,首先应该 ...

  4. 23种设计模式C++源码与UML实现--命令模式

    命令模式 Command模式也叫命令模式,是行为设计模式的一种.Command模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数. 在面向对象的程序设计中,一个对象调用另外一个对象 ...

  5. 23种设计模式C++源码与UML实现--原型模式

    原型模式 一个复杂对象,具有自我复制功能,统一一套接口. 原型模式主要面对的问题是:某些结构复杂的对象的创建工作,由于需求的变化,这些对象进场面对着剧烈的变化,但是他们却拥有比较一致的接口. 原型模式 ...

  6. 23种设计模式C++源码与UML实现--桥接模式

    桥接模式 Bridge模式,又叫做桥接模式,是构造型的设计模式之一.Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为让类承担不同的责任.它的主要特点是把抽象(Abstractio ...

  7. 23种设计模式C++源码与UML实现--状态模式

    状态模式 State模式也叫状态模式,是行为模式的一种,State模式允许通过改变对象的内部状态而改变对象的行为,这个对象变现的好像修改了它的类一样. 状态模式主要解决的事当控制一个对象状态的条件表达 ...

  8. 23种设计模式C++源码与UML实现--策略模式

    策略模式 Strategy模式也叫策略模式,是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交给客户端决定. ...

  9. 23种设计模式C++源码与UML实现--组合模式

    组合模式 Composite模式也叫做组合模式,是构造型的设计模式之一.通过递归的手段构造树形的对象结构,并可以通过一个对象来访问整个对象树. Component树形结构的节点抽象 为所有的对象定义统 ...

最新文章

  1. mysql语句大全 新浪博客_MySQL语句入门
  2. mysql和Oracle数据库的一些异同。
  3. python人工智能-Python和人工智能的关系,看完你就明白了!
  4. 通过Erlang构建TCP服务器
  5. Centos用户和用户组管理
  6. linux 格式化u盘_【Ventoy】一个U盘,启动多个系统
  7. A trip through the Graphics Pipeline 2011_06_(Triangle) rasterization and setup
  8. Spring Boot应用热启动的一种方式
  9. CSS中的margin、border、padding区别
  10. PHP_$_SERVER中QUERY_STRING,REQUEST_URI的用法
  11. JSP报表打印的一种简单解决方案
  12. 算法竞赛入门经典 aabb
  13. 剧情插件Cutscene Creator uSequencer 1.3.7.1使用说明二
  14. 如何删除金山毒霸网址导航
  15. python与ai的关系_Python与人工智能的关系原来是这样的...
  16. 字节跳动否认完成支付牌照收购 或是基于央行批准的不确定性
  17. 转:[IDEA]Java:“程序包XXX不存在”问题的三种解决方案
  18. java-php-python-ssm网上游戏商店设计计算机毕业设计
  19. 批归一化《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
  20. 苏州大学计算机评估全国第几位,重磅!全国首次专业学位水平评估结果公布,你的学校排第几?...

热门文章

  1. 华为交换机—RRPP协议
  2. 易宝典文章——用ISA 2006标准版发布Exchange 2010的OWA系列之申请Excha
  3. zoj-3471 Most powful
  4. nyoj971爬行的蚂蚁
  5. MIPI related
  6. py---------面向对象进阶
  7. HUE配置文件hue.ini 的zookeeper模块详解(图文详解)(分HA集群)
  8. Android大图片裁剪终极解决方案
  9. velocity 继续之 语法学习篇
  10. Python学习笔记:进程和线程(承)