C++设计模式之Template Method(模板方法模式)
模板方法模式总结起来就是灵活运用C++的多态性,灵活运用普通函数,虚函数,纯虚函数的组合,
打个比方,每个人每天的生活都不一样,老师要上课,学生要学习,程序员要编程,但是每个人都需要吃饭与休息,这样我们就可以吧吃饭与休息抽出了,在父类里面强制实现,不同的部分放在子类里面具体实现。在这里为了方便,就把函数的实现写在类里面了,就没有单独写在cpp文件里面了。
1.定义公共功能的实现,无论学生,老师,还是程序员,他们都是人,都需要吃饭与休息,这里可以定义父类,把吃饭与休息的功能在父类里面用普通函数强制实现,当然用虚函数也可以,只要不在子类里面实现就行,
class People
{
public:void eat()//父类里面实现的功能强制实现{printf("吃饭\n");}void sleep(){printf("休息\n");}virtual void work()=0; //纯虚函数在子类里面实现
};
如果需要在父类里面实现的功能还是建议使用普通函数强制实现。
2.定义子类,也就是不同的功能,在子类里面实现,比如学生,老师,程序员,他们的工作都不一样,需要在子类里面具体实现父类里的work功能。
class student:public People
{
public:void work() //子类可以使用普通函数使用{printf("我是学生,我要上学!!!\n");}
};class teacher:public People
{
public:void work(){printf("我是老师,我要上课!!!\n");}
};class programmer:public People
{
public:void work(){printf("我是程序员,我要写代码!!!\n");}
};
3.实际调用,就是多态的实现
People* stu=new student();
stu->eat();
stu->work();
stu->sleep();People* teach=new teacher();
teach->eat();
teach->work();
teach->sleep();People* prog=new programmer();
prog->eat();
prog->work();
prog->sleep();
实际调用可以再使用一次Facade模式进行封装,这里就不在赘述。模板设计模式就是灵活运用C++多态的特性,巧妙组合函数来进行实现。
C++设计模式之Template Method(模板方法模式)相关推荐
- 设计模式之略见一斑(Template Method模板方法模式)
模板方法模式就是预先作好一个模板,开发者只要根据模板添加相应的业务实现,这个就是架构啦. 它有如下特点: 1.这个模板一般是个抽象类,抽象出子类中部分公共的方法,从而减轻子类的负担. 2.这个模板可能 ...
- Template Method - 模板方法模式
1.概述 在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序.但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关. 例子1 ...
- Template Method(模板方法)模式
1. 意图 定义一个操作中的算法的骨架. 而将一些步骤延迟到子类中. 它使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 2. 动机 3. 适用性 一次性实现一个算法的不变部分. 并将 ...
- java 模板方法_设计模式(java实现)_模板方法模式(Template method)
设计模式(java实现)_模板方法模式(Template method) 模板方法模式是编程中经常用到到的模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个 ...
- 设计模式的征途—17.模板方法(Template Method)模式
在现实生活中,很多事情都需要经过几个步骤才能完成,例如请客吃饭,无论吃什么,一般都包含:点单.吃东西.买单等几个步骤,通常情况下这几个步骤的次序是:点单=>吃东西=>买单.在这3个步骤中, ...
- 设计模式03——Template Method模式
定义 模板方法(Template Method)模式就是带有模板功能的模式 ,组成模板方法的方法被定义在父类中,这些方法是抽象方法,在模板方法中规定了这些方法的执行流程,这些抽象方法需要子类来具体实现 ...
- python设计模式【7】-模板方法模式
UML类图简介 设计模式的分类 面向对象的设计原则 python设计模式[1]-单例模式 python设计模式[2]-工厂模式 python设计模式[3]-门面模式 python设计模式[4]-代理模 ...
- 行为型设计模式(2)—— 模板方法模式(Template Method Pattern)
文章目录 1.概述 2.简单实现 3.使用场景和优缺点 4.小结 参考文献 1.概述 使用设计模式可以提高代码的可复用性.可扩充性和可维护性. 模板方法模式(Template Method Patte ...
- JAVA设计模式(14) —行为型模板方法模式(Template Method)
1 定义: 模板方法模式(Template Method) Define the skeleton of an algorithm in anoperation, deferring some ste ...
最新文章
- jquery 跨域 没有权限
- php汽车配件管理系统,汽配仓库管理系统_汽配库存管理系统
- SQL Server Error 15404解决方案
- ES之各种运算符,for、while、do while 、switch case循环
- sql2005 分页 ROW_NUMBER()
- 任正非:外籍员工可当华为 CEO,但有条件;苹果欲研发“智能戒指”;MySQL 8.0.18 稳定版发布 | 极客头条...
- Linux启动流程与模块管理(15)
- edittext在哪可以获取有效值_java-从EditText获取文本字符串?
- 服务器文档读取不了,服务器读取不到内存
- php $GLOBALS 超全局变量的理解
- 在ghost时加载smartdrv.exe是否会提高速度
- matlab 拉普拉斯金字塔,图像金字塔
- 华笔记本linux系统方便吗,买华为国产Linux系统笔记本电脑的几个好处
- linux下rsync命令,linux上的rsync命令详解
- 互联网时代各行业都在快速更替,金融行业为什么即将成为下一个风口?
- esp8266网络自动对时 串口字符连接 病显示 12864i2c u8g2库
- 移动互联网:微信搜索功能大改版
- 大数据时代下的智慧育种,百奥云获数千万元Pre-A轮融资
- SeaJs的使用方法
- 【探索-字节跳动】字符串的排列
热门文章
- 利用apache的ab命令做服务器压力测试
- C语言oo1cpp怎么进,cpp 第八章第7题解决办法
- oracle 11G创建表空间、用户、配置监听和TNS
- JAVA读取EMF文件并转化为PNG,JPG,GIF格式
- 使用ASP.NET 2.0中的GridView控件
- python zip函数_相当于Python的zip函数
- 我竟然用git send-mail通过QQ邮箱提交了push request
- html中什么是围堵标签,HTML回顾(基础标签)
- 5加载stm32 keil_STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)
- IIS Express局域网访问配置