模板方法设计模式

来源:互联网 发布:丹麦语 知乎 编辑:程序博客网 时间:2024/05/13 10:31

含义

定义一个算法的骨架,而将算法一些步骤的具体实现延迟到子类中

核心

通过继承实现代码复用的技术

优点

 使用模版方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求

缺点

如果算法骨架有修改的话,则需要修改抽象类

代码基本结构

在一个抽象类中,定义一个final类型的方法,作为算法的骨架,当中实现方式不确定的步骤抽象成对应的抽象方法,由子类继承实现。子类继承父类,实现抽象方法。

abstract class 类名 {    // 算法的骨架    public final 返回类型 方法名(){        step1();        ...        step5();    }    // 不确定的步骤    public abstract 返回类型 step1();    public abstract 返回类型 step5();}

举例

  • 实现程序耗时统计功能
public class TemplateDemo {    public static void main(String[] args) {        Demo d = new Demo();        System.out.println(d.getTime());    }}abstract class GetTime {    public final long getTime() {        long start = System.currentTimeMillis();        code();        long end = System.currentTimeMillis();        return end - start;    }    public abstract void code();}class Demo extends GetTime {    @Override    public void code() {        int i = 0;        while(i < 100000) {            System.out.println("x");            i++;        }    }}

参考文章

模板方法模式深度解析

0 0