模版方法模式就是定义一个骨架,具体做什么操作由子类实现,比如我想测试某个方法执行使用的时间,记录时间的代码是固定的,变的只是不同的要测试方法(如添加,删除,修改),所以我们可以定义一个抽象类,提供一个抽象方法,是测试添加还是删除由子类决定。
定义模版类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毫秒