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

概述:
模版方法模式 就是 定义一个 算法骨架,而将 具体的算法 延迟到 子类 中来实现
使得 子类 可以 不改变 一个算法的 结构,就可以 重定义 该算法的 某些特定步骤
优缺点:
优点:
使用 模版方法模式,在定义 算法骨架 的同时,可以 很灵活 的实现 具体的算法,满足 用户灵活多变的需求
缺点:
如果 算法骨架 有修改的话,则 需要 修改抽象类
使用展示:
现在,本人先来给出一个模板类:
模板类:
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();
}
}
那么,现在本人来展示下运行结果:
运行结果:

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

浙公网安备 33010602011771号