引言

之前的议题都是围绕着封装转;已经封装了创建对象,方法调用,复杂接口、等等
现在要深入封装算法块,可以让子类在任何时候都可以将自己挂在进算法里。

模版方法模式类图

《HeadFirstDesignPattern》笔记:模版方法模式

  • 使用模版方法时,由超类控制流程,并抽象子类必须实现的方法,提供钩子函数,供子类选择实现与否,参与流程控制。
  • 超类往往是抽象类
  • 使用模版方法时,由超类控制流程,提供接口,由外部实现接口,在流程中使用到接口的方法。

设计原则

  • 好莱坞原则:别调我们,我们会调你。

原则解释
底层组件挂钩在高层组件下,由高层组件负责调用底层组件,高层组件决定什么时候和怎么使用这些组件

模版方法中,子类没有调用父类的方法,由父类决定什么时候调用子类方法。

其他设计模式中要到这个原则的有?

  • 外观模式
  • 观察者模式
  • 命令模式

jdk中的InputStream的read()方法 Arrays.sort的方法

脑动力

1

  • 如果使用了继承,那么数组的元素必须要实现comparable接口,限制了数组元素的类型
  • 由实现着决定comparable接口的逻辑,不依赖于具体实现,依赖抽象

2
工厂方法模式+

设计箱内的工具

设计基础

  • 封装
  • 继承
  • 多态
  • 抽象

设计原则

  • 多用组合,少用继承
  • 封装变化
  • 为交互对象之间的松耦合设计而努力
  • 最少知识原则
  • 好莱坞原则
  • 针对接口编程,不针对具体编程
  • 开闭原则
  • 依赖抽象,不依赖具体

设计模式

  • 策略模式:封装一系列的算法,让算法的实现独立于使用,可以达到动态切换算法的功能
  • 观察者模式:定义了一对多的对象关系,一个对象的状态变化会通知依赖他的对象,并自动更新
  • 装饰着模式:扩展类的另一种选择。类会变多。可以在运行时,动态的扩展类
  • 简单工厂模式:封装创建对象的代码,提高复用率和可维护性
  • 工厂方法模式::定义了一个接口,用于创建一种产品,使得对象的创建延迟到子类
  • 抽象工厂模式:定义了一个接口,用于创建相关或依赖对象的家族,不需要指定具体类(面对接口编程带来的优势)。
  • 命令模式:把请求封装成一个对象,使得请求和执行隔离开来。可以使用不同的请求来参数化其他对象。命令模式也支持撤销
  • 单例模式:提供全局唯一对象,并提供访问方法
  • 适配器模式:有类适配器(java不支持,需要多重继承)和对象适配器。把一个接口转换成客户端希望的接口
  • 外观模式:封装子系统的复杂性,提供高层接口,使得调用子系统更加简单。
  • 模版方法模式:定义了程序算法执行的骨架,由子类决定算法的具体细节步骤。模版方法模式,使得子类在不修改算法情况下,重新定义算法中的某些步骤

相关文章:

  • 2021-06-03
  • 2021-11-29
  • 2021-04-23
猜你喜欢
  • 2021-10-15
  • 2021-06-30
  • 2021-07-19
相关资源
相似解决方案