【设计模式】模版方法模式 详解

shadowLogo

概述:

模版方法模式 就是 定义一个 算法骨架,而将 具体的算法 延迟到 子类 中来实现
使得 子类 可以 不改变 一个算法的 结构,就可以 重定义 该算法的 某些特定步骤

优缺点:

优点:

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


缺点:

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


使用展示:

现在,本人先来给出一个模板类

模板类:

package edu.youzg.design.pattern.template;

public abstract class CalcTime {

    public void countTime() throws Exception {
        long start = System.currentTimeMillis();
        testNeededTime();
        long end = System.currentTimeMillis();
        System.out.println("耗时" + (end - start ) + "毫秒");
    }

    public abstract void testNeededTime() throws Exception;

}

现在,本人来通过这个模板来给出一个计算输出一条语句所用的时间的类:

实现类:

package edu.youzg.design.pattern.template;

public class TestPrint extends CalcTime{

    @Override
    public void testNeededTime() throws Exception {
        System.out.println("这是一句话");
    }

}

现在,本人来给出一个测试粉丝对Youzg心动耗时的类:

package edu.youzg.design.pattern.template;

public class TestWithYouzg extends CalcTime{

    @Override
    public synchronized void testNeededTime() throws Exception {
        this.wait(520);
    }

}

现在,本人再来给出一个 测试类

测试类:

package edu.youzg.design.pattern.template;

/**
 * @Author: Youzg
 * @CreateTime: 2021-05-10 19:44
 * @Description: 带你深究Java的本质!
 */
public class YouzgTest {

    public static void main(String[] args) throws Exception {
        CalcTime testTime = new TestPrint();
        testTime.countTime();
        System.out.println("========");
        testTime = new TestWithYouzg();
        testTime.countTime();
    }

}

那么,现在本人来展示下运行结果

运行结果:

结果


那么,至此,模版方法模式 就讲解完毕了!

posted @ 2021-05-10 19:52  在下右转,有何贵干  阅读(68)  评论(0)    收藏  举报