// 定义:定义一个操作中的算法框架,将一些步骤延迟到子类中实现
//
// 模式举例:去下馆子吃饭,分为点单,吃什么,厨师注意,买单
//        等事项,其中点单和买单是固定的,吃什么和厨师注
//        意什么灵活多变
//
// 模式实战经验:网络封包的串行化和反串行化
//
//#include<iostream>
using namespace std;class ChiFan
{
public:void XiaGuanZi(){dianDan();chiDongXi();zhuYiShiXiang();maiDan();}protected://公用方法,在基类中实现非虚函数void dianDan(){cout <<"叫服务员,点单"<<endl;}//纯虚函数,子类必须实现virtual void chiDongXi()=0;//钩子方法,可重写,可不重写,虚函数virtual void zhuYiShiXiang(){}void maiDan(){cout <<"叫服务员,买单"<<endl;}
};//吃面条
class ChiMian : public ChiFan
{
protected:virtual void chiDongXi(){cout <<"来碗面条"<<endl;}virtual void zhuYiShiXiang(){cout <<"面条多放辣子"<<endl;}
};//吃川菜
class ChiChuanCai : public ChiFan
{
protected:virtual void chiDongXi(){cout <<"上川菜"<<endl;}virtual void zhuYiShiXiang(){cout <<"做菜不要放香菜"<<endl;}
};int main()
{ChiFan * chifan = new ChiMian();chifan->XiaGuanZi();return 0;
}

3_2 TemplateMethodMode 模板方法模式相关推荐

  1. 大话设计模式:模板方法模式

    一.什么是模板方法模式 算法骨架的封装 使用一个算法骨架,确定算法流程,具体步骤可变化的部分交给子类实现,这样子类就可以不改变算法骨架流程,重定义部分具体步骤的实现. UML图 AbstractTem ...

  2. 设计模式之模板方法模式(Template Method)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  3. android 模板方法模式,安卓设计模式(七)模板方法模式

    模板方法模式用于固定相关操作的执行流程,将具体实现延迟到子类中 该系列其他文章: 定义: 定义一个操作中算法的框架,而降一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定 ...

  4. JAVA 设计模式 模板方法模式

    定义 模板方法模式 (Template Method) 定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成. 模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模 ...

  5. 模板方法模式与策略模式的区别

    2019独角兽企业重金招聘Python工程师标准>>> 模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义 ...

  6. 设计模式--模板方法模式

    2019独角兽企业重金招聘Python工程师标准>>> 模板方法模式(template method): 一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实 ...

  7. 设计模式----模板方法模式UML和实现代码

    2019独角兽企业重金招聘Python工程师标准>>> 一.什么是模板方法模式? 模板方法模式(Template Method) 定义一个操作中算法的骨架,而将一些步骤延迟到子类中. ...

  8. JAVA基础13-Java抽象方法、抽象类、抽象之模板方法模式

    文章目录 Java抽象方法和抽象类 抽象之模板方法模式 Java抽象方法和抽象类 抽象类: Java中可以定义没有方法体的方法,该方法由子类来具体实现.这个没有方法体的方法我们称之为抽象方法,含有抽象 ...

  9. Template Method - 模板方法模式

    1.概述 在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序.但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关. 例子1 ...

最新文章

  1. 综述 | 深度学习中的优化理论
  2. POJ 3259 Wormholes(负权环路)
  3. 大连理工大学计算机原理实验交通灯,大连理工大学计算机原理第四次实验.docx...
  4. 我自己为我自己定制的文章模板
  5. 粗选公式-通达信(东方财富网)
  6. 【错误记录】Flutter 报错 Downloading the Dart SDK using the BITS service failed, retrying with WebRequest...
  7. Java填坑系列之SparseArray
  8. 模拟问路场景理解递归
  9. 如何模拟Spring bean(版本2)
  10. Python ValueError: IO operation on closed file
  11. Java多线程:解决生产者/消费者模式
  12. 推荐几个好用的php集成开发环境,推荐几个好用的PHP集成开发环境 (2
  13. python如何制作一个任意列表_我要悄悄学Python之列表(一)
  14. 计算机网络超详细笔记(六):传输层
  15. C# globle应用
  16. 分库分表面试题及答案
  17. 互联网裁员形势严峻,2019年程序员的发展空间还有多大?
  18. Arduino Web Editor网页编辑器入门
  19. 龙宫旅游策划方案:5A景区的突破性发展!
  20. 【爆笑】句经典流行俏皮语【爆笑】[

热门文章

  1. 分布式文件系统研究-测试-搭建测试环境
  2. 微服务发现组件Eureka:简介以及Eureka服务端开发
  3. ES6新特性之let和const命令
  4. linux电视改安卓,mstar安卓智能电视方案源代码常用修改
  5. 【报错笔记】程序报错:Cause: java.sql.SQLException: Invalid value for getInt() - ‘4ab72edc-c02f-423f-ae9e-18c30
  6. Microsoft Dynamics CRM server 2013 一般销售流程之 报价单功能详解
  7. 关于 eclipse 插件JsonEditorPlugin-0.9.4安装与使用
  8. ehcache + mysql例子与性能测试
  9. 安驾者电子狗升级步骤
  10. 一个简单的防爬虫脚本(转载欧彬)