23种设计模式C++源码与UML实现--模板模式
模板模式
Template Method
模式也叫模板方法模式,是行为模式之一,它具有把特定的步骤算法中的某些必要的处理委让给抽象方法,通过子类继承抽象方法的不同实现改变整个算法的行为。
使用场景
- 具有统一的操作步骤或者操作过程
- 具有不同的操作细节
- 存在多个具有同样操作步骤的应用场景,某些具体的操作细节却各不相同
在抽象类中统一操作步骤,并规定好接口,让子类实现接口,这样可以把各个具体的子类实现操作步骤解耦合
AbstractClass
抽象类的父类
ConcreteClass
具体的实现子类
templateMethod():
模板方法
method1
与method2()
具体操作方法
代码实现:
//
// 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实现--模板模式相关推荐
- 23种设计模式C++源码与UML实现--外观模式
外观模式 facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种,facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单界面.这个一致的简单的界面被称为fac ...
- 23种设计模式C++源码与UML实现--建造者模式
建造者模式 代码仓库地址:建造者模式 Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种.Builder模式是一种对象创建模式之一,用来隐藏复合对象的创建过程.他把 ...
- 23种设计模式C++源码与UML实现--迭代器模式
迭代器模式 Iterator模式也叫迭代模式,是行为模式之一,他把对容器种包含的内部对象的访问委让给外部类,使用Iterator按顺序进行遍历访问的设计模式. 在使用Iterator模式之前,首先应该 ...
- 23种设计模式C++源码与UML实现--命令模式
命令模式 Command模式也叫命令模式,是行为设计模式的一种.Command模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数. 在面向对象的程序设计中,一个对象调用另外一个对象 ...
- 23种设计模式C++源码与UML实现--原型模式
原型模式 一个复杂对象,具有自我复制功能,统一一套接口. 原型模式主要面对的问题是:某些结构复杂的对象的创建工作,由于需求的变化,这些对象进场面对着剧烈的变化,但是他们却拥有比较一致的接口. 原型模式 ...
- 23种设计模式C++源码与UML实现--桥接模式
桥接模式 Bridge模式,又叫做桥接模式,是构造型的设计模式之一.Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为让类承担不同的责任.它的主要特点是把抽象(Abstractio ...
- 23种设计模式C++源码与UML实现--状态模式
状态模式 State模式也叫状态模式,是行为模式的一种,State模式允许通过改变对象的内部状态而改变对象的行为,这个对象变现的好像修改了它的类一样. 状态模式主要解决的事当控制一个对象状态的条件表达 ...
- 23种设计模式C++源码与UML实现--策略模式
策略模式 Strategy模式也叫策略模式,是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交给客户端决定. ...
- 23种设计模式C++源码与UML实现--组合模式
组合模式 Composite模式也叫做组合模式,是构造型的设计模式之一.通过递归的手段构造树形的对象结构,并可以通过一个对象来访问整个对象树. Component树形结构的节点抽象 为所有的对象定义统 ...
最新文章
- mysql语句大全 新浪博客_MySQL语句入门
- mysql和Oracle数据库的一些异同。
- python人工智能-Python和人工智能的关系,看完你就明白了!
- 通过Erlang构建TCP服务器
- Centos用户和用户组管理
- linux 格式化u盘_【Ventoy】一个U盘,启动多个系统
- A trip through the Graphics Pipeline 2011_06_(Triangle) rasterization and setup
- Spring Boot应用热启动的一种方式
- CSS中的margin、border、padding区别
- PHP_$_SERVER中QUERY_STRING,REQUEST_URI的用法
- JSP报表打印的一种简单解决方案
- 算法竞赛入门经典 aabb
- 剧情插件Cutscene Creator uSequencer 1.3.7.1使用说明二
- 如何删除金山毒霸网址导航
- python与ai的关系_Python与人工智能的关系原来是这样的...
- 字节跳动否认完成支付牌照收购 或是基于央行批准的不确定性
- 转:[IDEA]Java:“程序包XXX不存在”问题的三种解决方案
- java-php-python-ssm网上游戏商店设计计算机毕业设计
- 批归一化《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
- 苏州大学计算机评估全国第几位,重磅!全国首次专业学位水平评估结果公布,你的学校排第几?...