我们首先来观察以下代码,我们要求统计aa类与bb类的两个任务的执行时间
main方法类
package Time;
public class Main {
public static void main(String[] args) {
AA aa=new AA();
aa.job();
BB bb=new BB();
bb.job();
}
}
aa类
package Time;
public class AA {
public void job(){
long start =System.currentTimeMillis();
int sum=1;
for (int i=1;i<100000;i++){
sum=i*sum;
}
long end=System.currentTimeMillis();
System.out.println("AA任务的执行时间为"+(end-start));
}
}
bb类
package Time;
public class BB {
public void job(){
long start =System.currentTimeMillis();
int sum=0;
for (int i=0;i<100000;i++){
sum=i+sum;
}
long end=System.currentTimeMillis();
System.out.println("BB任务的执行时间为"+(end-start));
}
}
我们可以发现在aa与bb中他们的job都含有两个主体,计算时间的函数和他的真实的工作。
这个时候我们可以进行方法的抽象,我们在以后重新建立新的类时,只需要新建cc类的job即可。
首先来看模板
package Time;
public abstract class Abstr {
/**每一个类的工作任务*/
public abstract void job();
public void calJobTime(){
long start =System.currentTimeMillis();
job();
long end=System.currentTimeMillis();
System.out.println(this.toString()+"任务的执行时间为"+(end-start));
}
}
我们再来观察aa类与bb类
package Time;
public class AA extends Abstr {
@Override
public void job(){
int sum=1;
for (int i=1;i<100000;i++){
sum=i*sum;
}
}
}
package Time;
public class BB extends Abstr{
@Override
public void job(){
int sum=0;
for (int i=0;i<100000;i++){
sum=i+sum;
}
}
}
最后的main类
package Time;
public class Main {
public static void main(String[] args) {
AA aa=new AA();
aa.calJobTime();
BB bb=new BB();
bb.calJobTime();
}
}