33. 模板方法模式

作者: Next_吴思成 | 来源:发表于2018-07-19 21:23 被阅读6次

定义

模板方法模式(Template Method Pattern):定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

通俗理解

当我们在写ppt的时候,我们第一个想到的就是上网找一个模板,然后用这个模板,把ppt弄得漂亮一些。这里的模板就是我们今天要讲到的模板模式,它是一种用继承来复用代码的方式,将通用的方法放到父类当中,然后彼此不同的方法方到子类上面。就像写ppt一样,每一个人写ppt的内容都是不一样的,但是外观,一些边框字体都是一样的,这样我们就可以采用下载网上的ppt模板,套上自己的内容去做ppt,这样就可以很快很高效地完成ppt的书写了。因此这里的ppt模板就像父类,而自己的内容就像子类,子类能用父类的设计,就实现了复用。

示例

用模板写ppt。

渣渣程序

PPT类

public class PPT1 {
    public void outlook() {
        System.out.println("选择模板");
    }
    public void writePPT() {
        System.out.println("写PPT1");
    }
}
// PPT2类似,省略

程序入口

public class Main {
    static PPT1 ppt1 = new PPT1();
    static PPT2 ppt2 = new PPT2();
    public static void main(String[] args) {
        ppt1.outlook();
        ppt1.writePPT();
        ppt2.outlook();
        ppt2.writePPT();
    }
}
//选择模板
//写PPT1
//选择模板
//写PPT2

问题就是,outlook方法,我们写了两遍,复制,黏贴代码都是罪过,千万不要当CV程序员,解决办法就是把他们提到父类里面。

优化

类图

image

程序

PPT抽象类和实现

public abstract class PPT {
    public void outlook() {
        System.out.println("选择模板");
    }
    public abstract void writePPT();
}
public class PPT1 extends PPT{
    public void writePPT() {
        System.out.println("写PPT1");
    }
}
// PPT2类似,省略

程序入口

public class Main {
    static PPT ppt1 = new PPT1();
    static PPT ppt2 = new PPT2();
    public static void main(String[] args) {
        ppt1.outlook();
        ppt1.writePPT();
        ppt2.outlook();
        ppt2.writePPT();
    }
}
//选择模板
//写PPT1
//选择模板
//写PPT2

除了在抽象类当中定义具体的方法和抽象的方法外,还可以定义空方法和钩子方法。

  • 空方法:在方法体上不做任何的操作;
  • 钩子方法:返回为boolean的方法,用来确定是否运行某个代码片段,子类中确定是否运行父类的某些片段。

优点

  1. 代码复用,将子类中复用的代码都放到父类当中去;
  2. 扩展性强。

缺点

  1. 具体方法类比较多;
  2. 要知道哪些是共用的哪些不是,不然这种复用会变得很糟糕。

应用场景

  1. 几个类中的代码片段反复出现的,(一个类中反复出现的可以提到一个方法中);
  2. 子类有统一的操作步骤与过程;
  3. 子类有具体的操作细节;

代码

e33_template_method_pattern

吐槽

几个类中的代码片段反复出现的,提到父类当中。

https://www.jianshu.com/p/2a167b733c87

相关文章

  • 33. 模板方法模式

    定义 模板方法模式(Template Method Pattern):定义一个操作中算法的框架,而将一些步骤延迟到...

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

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

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

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

  • 模板方法模式

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

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

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

  • 模板方法模式

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

  • 模板方法模式

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

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

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

  • 模板方法及观察者模式

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

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

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

网友评论

    本文标题:33. 模板方法模式

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