zoukankan      html  css  js  c++  java
  • 十一个行为模式之模板方法模式(Template Method Pattern)

    定义:
    定义一个操作中算法的框架,并且将一部分操作延迟到子类当中。使得子类可以不改变一个算法的结构即可重新定义算法步骤。

    结构图:

    • AbstractClass:抽象方法类,定义了一些基本操作,这些操作可以是抽象方法,也可以是具体方法,每一个基本操作对应一个算法步骤,子类可以重新实现这些操作。同事也定义了一个模板方法,用于定义算法框架。
    • ConcreteClass:具体方法类,实现了抽象类中定义地而未实现的抽象方法,借此来改变父类中算法步骤。

    抽象方法类中的基本方法:
    在抽象类中,定义的基本方法一般有下面三种:

    • 抽象方法: 抽象类未实现,具体由子类实现该方法。
    • 具体方法:抽象类提供了实现,子类可以选择继承或者覆盖。
    • 钩子方法:
      • isXXX():与具体操作进行挂钩,控制算法步骤中的不同步骤。
      • 实现为空的具体方法:子类如果没有覆盖父类中的方法,编译可以正常通过,而不像抽象方法一样,在C++语言中可以采用vitrual字段来控制。

    优点:

    • 在父类中形式化定义一个算法,由它的子类来实现细节处理,但并不改变算法执行次序。
    • 将共同的代码放入抽象类中,实现代码的复用。
    • 可以实现一种反向控制结构,通过子类覆盖父类的钩子方法来决定某一方法是否被执行。
    • 更换子类的方法和增加子类很方便,符合单一职责和开闭原则。

    实例:

    TemplateMethodPattern.java

  • 相关阅读:
    如何制作动态层分组报表
    填报表之数据留痕
    填报表中也可以添加 html 事件
    填报脚本之轻松搞定复杂表的数据入库
    在报表中录入数据时如何实现行列转换
    如何在报表中绘制 SVG 统计图
    如何用报表工具实现树状层级结构的填报表
    6.JAVA_SE复习(集合)
    JAVA_SE复习(多线程)
    数据库基本概念
  • 原文地址:https://www.cnblogs.com/zhangfei614/p/6106124.html
Copyright © 2011-2022 走看看