package com.qf.test;
/*
* 模板设计模式:我们在实现一个功能的时候,功能分成两部分,一部分是确定的,一部分是不确定的.将确定的部分交给当前类实现
* 将不确定的部分交给子类实现.子类实现的结果又会反过来影响确定部分的功能.
*
* 实例:计算一个功能的耗时
* 分析:固定的功能:开始时间,结束时间
* 不固定的功能:程序运行的时间
*/
public class Demo {
public static void main(String[] args) {
//测试
Zi zi = new Zi();
long value = zi.getTime();
System.out.println(value);
}
}
abstract class Fu{
//抽象的不确定的方法
abstract public void function();
public long getTime() {
//开始时间
long startTime = System.nanoTime();//获取的系统时间,单位纳秒
//程序运行的时间,不确定的做成一个抽象的方法,只有声明没有实现,让子类实现
function();
//结束时间
long endTime = System.nanoTime();
return endTime-startTime;
}
}
class Zi extends Fu{
public void function() {
for (int i = 0; i < 10; i++) {
System.out.println("i:"+i);
}
}
}