模版方法模式就是定义一个骨架,具体做什么操作由子类实现,比如我想测试某个方法执行使用的时间,记录时间的代码是固定的,变的只是不同的要测试方法(如添加,删除,修改),所以我们可以定义一个抽象类,提供一个抽象方法,是测试添加还是删除由子类决定。
定义模版类Demo,有一个抽象方法executeMethod(),再提供一个计算时间的方法getTime()
public abstract class Demo {
public abstract void executeMethod();
public long getTime(){
long startTime = System.currentTimeMillis();
executeMethod();
long endTime = System.currentTimeMillis();
return endTime - startTime;
}
}
测试添加需要的时间,新建一个类继承Demo重写executeMethod()方法
public class AddClass extends Demo{
@Override
public void executeMethod() {
System.out.println("调用添加方法。。。");
for(int i =0;i<10000000;i++){
}
}
}
如果想测试删除需要的时间,那就再建一个测试删除时间的类,不管测试哪些方法,我们使用的都是一个计算时间的方法( Demo类中的getTime()方法 )
public class DelClass extends Demo {
@Override
public void executeMethod() {
System.out.println("调用删除方法。。。");
for (int i = 0; i < 10000000; i++) {
}
}
}
为防止方法执行过快看不出效果,这里循环了10000000次
测试类
public class Test {
public static void main(String[] args) {
Demo add = new AddClass();
long addUseTime = add.getTime();
System.out.println("添加使用"+addUseTime + "毫秒");
long delUseTime = add.getTime();
System.out.println("删除使用"+delUseTime + "毫秒");
}
}
控制台输出
调用添加方法。。。
添加使用4毫秒
调用添加方法。。。
删除使用3毫秒