美文网首页
十、模板方法模式

十、模板方法模式

作者: Serenity那年 | 来源:发表于2018-10-28 21:31 被阅读4次

当我们要重复实现的一个过程或者一系列步骤中,这些过程或步骤都高度相似,也就是整个流程都很一致,但只是个别步骤在某些更详细的层次上的实现可能不同时,通常使用模板方法模式来处理;


一个类要想成为子类的模板,所有重复的代码都要上升到父类中去,而不是让每个子类重复去实现;

模板方法模式:定义一个操作中的流程步骤,而将一些步骤延迟到子类中。

模板方法使得子类可以不改变一个算法的结构,但能够重新定义该算法的某些特定步骤。

模板方法模式结构图.png
一、具体使用方式如下:
  • 1.AbstractTemplate是一个抽象类,其实就是一个抽象模板,定义并实现了一个模板方法;这个模板方法是一个具体的方法,给出了一个顶级的逻辑骨架,而逻辑的具体组成封装到抽象中,推迟到子类中实现。
/**
 * Created by serenitynanian on 2018/6/5.
 * 模板方法模式
 */

public abstract class AbstractTemplate {

    /**
     * 一些抽象的具体行为,延迟到子类中去实现
     */
    public abstract void primitiveOperateOne();
    public abstract void primitiveOperateTwo();

    /**
     * 模板方法:给出了逻辑的骨架,而逻辑的组成是一些抽象的操作,
     *          具体的实现延迟到子类中;
     *          
     *  备注:骨架整体调用逻辑不能修改,但是能够根据不同的需求;        
     */
    public void templateMethod(){
        primitiveOperateOne();
        primitiveOperateTwo();
        System.out.println("执行了模板方法");
    }

}
    1. ConcreteSub实现模板抽象类中的抽象方法,每一个AbstractTemplate都可以有任意多个ConcreteSub类,而每个ConcreteSub都可以实现不同的业务逻辑;
/**
 * Created by serenitynanian on 2018/6/5.
 * 实现模板抽象类中的抽象方法,每一个AbstractTemplate都可以有任意多个ConcreteSub类,
 *      而每个ConcreteSub都可以实现不同的业务逻辑
 */

public class ConcreteSubA extends AbstractTemplate {
    @Override
    public void primitiveOperateOne() {
        System.out.println("实现类中primitiveOperateOne方法的逻辑执行");
    }

    @Override
    public void primitiveOperateTwo() {
        System.out.println("实现类中primitiveOperateTwo方法的逻辑执行");

    }
}
  • 3.具体使用方式
public class Test {

    public static void main(String[] args) {
        AbstractTemplate abstractTemplate ;

        abstractTemplate = new ConcreteSubA();
        abstractTemplate.templateMethod();
        
        abstractTemplate = new ConcreteSubB();
        abstractTemplate.templateMethod();
    }
}
二、总结
  • 1.模板方法模式就是把不变的行为放到父类中,去除子类中的重复代码来体现它的优势;
  • 2.模板方法模式就是提供一个很好的代码复用平台;

相关文章

  • 11.8设计模式-模板模式-详解

    设计模式-模式模式 模板方法模式详解 模板方法模式在android中的实际运用 1.模板方法模式详解 2.模板方法...

  • 第5章 -行为型模式-模板方法模式

    一、模板方法模式的简介 二、模板方法模式的优点 三、模板方法模式的应用场景 四、模板方法模式的实例

  • 模板方法模式

    模板方法模式 模板方法模式的定义 模板方法模式(Template Method Pattern)是如此简单,以致让...

  • 设计模式系列-模板方法模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 模板方法模式 定义 模板方法模式在一个方法中定义了算法...

  • 十、模板方法模式

    当我们要重复实现的一个过程或者一系列步骤中,这些过程或步骤都高度相似,也就是整个流程都很一致,但只是个别步骤在某些...

  • 模板方法模式

    一、模板方法模式介绍 二、模板方法模式代码实例

  • 模板方法模式

    一、概念 二、模板方法模式UML图 三、模板方法模式的2个角色 四、模板方法与基本方法的概念 模板方法: 基本方法...

  • 设计模式 | 模板方法模式及典型应用

    本文的主要内容: 介绍模板方法模式 源码分析模板方法模式的典型应用Servlet 中的模板方法模式Mybatis ...

  • 模板方法及观察者模式

    1、本文主要内容 模板方法定义 模板方法示例 观察者模式 本文主要讲两个设计模式,模板方法以及观察者模式,模板方法...

  • 设计模式之十——模板方法模式

    原文传送门 1 介绍 模板方法模式是类的行为模式。 1.1 什么是模板方法模式 模板方法模式是所有模式中最为常见的...

网友评论

      本文标题:十、模板方法模式

      本文链接:https://www.haomeiwen.com/subject/yhqpsftx.html