模板设计模式
需求
- 有多个类,完成不同的任务job
- 要求统计得到各自完成任务的时间
- 请编程实现
练习
设计抽象类(Template),能完成如下功能:
- 编写方法
calTime()
,可以计算某段代码的耗时时间 - 编写抽象方法
job()
- 编写子类
Sub1,Sub2
,继承抽象类Template
,并实现job()
方法。 - 编写测试类
TestTemplate
,看看是否好用。
具体实现
package day04.abstract_;
public class TestTemplate {
public static void main(String[] args) {
Sub1 sub1 = new Sub1();
sub1.calTime(); // 查找子类,子类没有此方法,然后查找父类
Sub2 sub2 = new Sub2();
sub2.calTime(); // 查找子类,子类没有此方法,然后查找父类
}
}
abstract class Template{
public abstract void job();
public void calTime(){ // 父类的 calTime()
// 获取开始时间
long start = System.currentTimeMillis();
job(); // 动态绑定,根据对象的运行类型执行对应的 job() 方法
// 获取结束时间
long end = System.currentTimeMillis();
// 计算耗时
System.out.println("任务耗时 " + (end - start) + " ms");
}
}
class Sub1 extends Template{
@Override
public void job() {
long sum = 0;
for (long i = 1; i <= 1000000; i++) {
sum += i;
}
System.out.println(sum);
}
}
class Sub2 extends Template{
@Override
public void job() {
long sum = 0;
for (long i = 1; i <= 2000000; i++) {
sum += i;
}
System.out.println(sum);
}
}