zoukankan      html  css  js  c++  java
  • 【HeadFirst设计模式】8.模板方法模式

    模板方法

      定义:

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

    策略模式:

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

      

    好莱坞原则:

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

      与依赖倒置原则:

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

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

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

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

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

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

    要点:

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

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

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

      抽象方法由子类实现。

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

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

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

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

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

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

      

    OO原则备忘:

      封装变化

      多用组合,少用继承

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

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

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

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

      只和朋友谈

      别找我,我会找你

      

  • 相关阅读:
    Java 泛型学习四 自动擦除
    Java 泛型学习三 通配符
    ava的动态性支持学习七 方法句柄调用的性能对比
    Java 泛型学习一 泛型概念
    Java中正则Matcher类的matches()、lookAt()和find()的区别
    Java 泛型学习五 泛型擦除带来的不自然
    Java I/O 流的简单介绍及示例
    Java 泛型学习二 泛型的限制
    Java 泛型学习六 泛型类型系统
    字节存储机制:bigedian 和 littleendian
  • 原文地址:https://www.cnblogs.com/laizhd/p/3631940.html
Copyright © 2011-2022 走看看