day03模板方法设计模式

/*
模板方法设计模式
例子:
需求:获取一段程序的运行的时间
原理:获取一段程序的开始时间和结束时间并相减
获取时间的方法:System.currentTimeMillis();

但代码优化后,就发现有一部分的方法不愿意复写的话就final它
还有一部分不确定就把它抽象abstract让子类去复写
但要是不确定的部分也有主体的话就不能用abstract 也要让子类去复写;

这种方式就叫做模板方法设计模式
定义:在定义功能时,功能的一部分确定,但是一部分不确定,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该类的子类去完成。

*/
abstract class GetTime
{
public final void getTime()//不允许子类去复写这个方法
{
long start = System.currentTimeMillis();
runcode();//调用该方法
long end = System.currentTimeMillis();
System.out.println("毫秒数="+(end-start));
}
public abstract void runcode();//抽象这个方法,让子类去复写它
}
class RunCode extends GetTime //如果运行的时间不同
{ public void runcode()//复写这个方法
{for (int x=0;x<1000 ;x++ )//让程序运行的时间
{
System.out.print(x);
}
}
}
class TemplateDemo
{
public static void main(String [] args)
{
new RunCode().getTime();//让子类去调用父类中的方法但自己去复写程序运行的时间
}
}

原文地址:https://www.cnblogs.com/secretmonster/p/8686591.html