模板方法

  定义:

    在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使用得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

策略模式:

  定义一个算法家族,并让这些算法可以互换。正因为每一个算法都被封装起来了,所以客户可以轻易地使用不同的算法。

  

好莱坞原则:

  别调用我们,我们会调用你。(依赖抽象)

  与依赖倒置原则:

    避免使用具体类,而多使用抽象

用模版方法来做排序(用非继承的方式实现模板方法):

  在Arrays中提供了sort的静态方法,sort要求传进的是一个数组。

  这里的sort是一个模板方法,但是它并不是通过继承来实现的,而是将该模样方法中所封装的算法的约束转移至数组中。

  也就是说,被传进来的数组中的对象必须实现Comparable接口,否则sort无法对数组进行排序。

  sort并不关心Comparable的具体行为,只要能提供sort排序所需要的接口即可。

要点:

  模板方法定义了算法的步骤,把这些步骤的实现延迟到子类。

  模板方法模式为我们的提供了一种代码复用的重要技巧。

  模板方法的抽象类可以定义具体方法、抽象方法和钩子。

  抽象方法由子类实现。

  钩子是一种方法,它在抽象类中不做事,或者只做默认的事情,子类可以选择要不要去覆盖它。

  为了防止子类改变模板方法中的算法,我们可以将模板方法声明为final。

  好莱坞原则告诉我们,将决策权放在高层模块中,以便决定如何以及何时调用低层模块。

  你将在真实世界代码中看到模版方法模式的许多变体,不要期待它们全部都是一眼就可以被你认出的。

  策略模式和模板方法模式都封装衍,一个用组合,一个用继承。

  工厂方法是模式方法的一种特殊版本。

  

OO原则备忘:

  封装变化

  多用组合,少用继承

  针对接口编程,不针对实现编程

  为交互对象之间的松耦合设计而努力

  类应该对扩展开放,对修改封闭

  依赖抽象,不要依赖具体类

  只和朋友谈

  别找我,我会找你

  

转载于:https://www.cnblogs.com/laizhd/p/3631940.html

【HeadFirst设计模式】8.模板方法模式相关推荐

  1. 一篇博客读懂设计模式之---模板方法模式

    设计模式之模板方法模式: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 简而言之就是:父类定义了骨架(调用哪些方法及其 ...

  2. 设计模式之模板方法模式详解

    设计模式之模板方法模式详解 概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的 ...

  3. Java设计模式之模板方法模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  4. php templete什么意思,PHP设计模式之模板方法模式定义与用法详解

    本文实例讲述了PHP设计模式之模板方法模式定义与用法.分享给大家供大家参考,具体如下: 什么是模板方法模式 模板方法(Template Method)设计模式中使用了一个类方法templateMeth ...

  5. 【设计模式】模板方法模式(C#)

    [设计模式]模板方法模式 1.概述 背景 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某 ...

  6. 设计模式之模板方法模式(TemplateMethod)

    设计模式之模板方法模式 模板方法模式 代码实现 模式的应用 模板方法模式 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板.它的子类可以按需要重写方法实现 ...

  7. 【Java】设计模式之模板方法模式

    - 好记性不如烂笔头,特将设计模式之模板方法模式记录在我的小仓库. 文章目录 什么是模板方法模式 案例 什么是模板方法模式 简而言之就是一套算法可以适用于多个类,则进行的步骤汇总,让子类别在不改变算法 ...

  8. Carson带你学设计模式:模板方法模式(Template Method)

    前言 今天Carson来全面总结最常用的设计模式 - 模板方法模式. Carson带你学设计模式系列文章 Carson带你学设计模式:这是一份全面 & 详细的设计模式学习指南 Carson带你 ...

  9. C++设计模式之模板方法模式

    模板方法模式 设计模式的定义 模板方法模式详解 背景----柠檬茶和咖啡的的冲泡方式 代码实现咖啡和茶冲泡的类 整理相似点 进一步设计 总结一下 认识模板方法 测试一下 模板方法模式的优点 模板方法的 ...

  10. 设计模式-04.模板方法模式

    设计模式-04.模板方法模式 模板方法模式 定义 介绍 实现 优点 缺点 使用场景 扩展 定义 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板.它的子类 ...

最新文章

  1. SmartNIC/DPU — 主流厂商
  2. 客观指标VS主观质量:拨开遮挡高清视频技术的迷雾
  3. SQLSERVER 日志收缩
  4. 单用户登陆demo-后者挤到前者,类似QQ
  5. ccs4c语言用户手册,CCS v4.x快速入门:EasyDsp开发套件产品手册
  6. String常用函数
  7. Linux之nmap扫描多网段
  8. win10 操作无法完成,因为文件已在windows资源管理器打开
  9. setvlet:控制台获取前端表单以及xml文件数据信息
  10. Markdown 书写规范
  11. 算术-几何平均不等式
  12. 图片文档扫描矫正处理(手机扫描仪),OCR识别,图片修改库整合
  13. 简单局域网网络故障排查和处置
  14. 【GCN-RS】多行为推荐:Multi-behavior Recommendation with Graph Convolutional Networks (SIGIR‘20)
  15. 协议中的mask什么意思?
  16. win10计算机未连接到网络适配器,windows10系统下网络适配器显示未连接如何解决...
  17. 意大利进口便携式现场振动分析仪N600基本功能参数
  18. java开发常用四大框架(现在java 最流行的开发框架)
  19. 走进贵州大数据综合试验区展示中心
  20. 基于图像识别的微信游戏“跳一跳”自动控制实验

热门文章

  1. python pywin32 微信_python win32con安装_python-2.7 – 安装pywin32
  2. chrome安装或者重装 【windows】
  3. 提效工具git的基本使用
  4. 让人抓头的Java并发(四) 阻塞队列--CPU飙升排查案例
  5. vue----常用实例方法--$mount(),$destroy(),$watch(),$forceUpdate()
  6. 十三、IntelliJ IDEA 中的版本控制介绍(下)
  7. Redis 和 Memcached 的区别
  8. elf文件中的.plt .rel.dyn .rel.plt .got .got.plt的关系
  9. AUTOCAD自学教程一
  10. 一个很全的中断资料网站