/*
* 定义好一个模板,通用逻辑进行实现, 核心的逻辑空出,谁使用谁添加
*
* 时间测试 --> 一段代码的执行时间
* 需要设计一个模板,写好计算时间, 测试代码的位置空余
*/
public class Test {
public static void main(String[] args) {
/**
* 模板:
* 在父类中定义一个方法,方法是一些总体(骨架),而将某一些实际操作延迟到子类中实现
* ps: (通用)
* 提供模板方法的类 --> 抽象类--> 抽象方法
* 模板方法中具体的实现 是子类
*/
System.out.println("选择排序时间:");
new SelectSort().time();
System.out.println("-------------------------------");
System.out.println("冒泡排序时间");
new BubbleSort().time();
}
}
abstract class TemplateDesign {
//获取使用时间
public final void time() {
//开始的时间(毫秒)
long beginTime = System.currentTimeMillis();
//代码具体的实现
dowork();//延迟调用
//结束时间
long endTime = System.currentTimeMillis();
System.out.println("程序所耗费的时间"+(endTime - beginTime)+"/ms");
}
//抽象方法让需要测试时间的类来实现
public abstract void dowork();
}
class SelectSort extends TemplateDesign {
//具体测试
@Override
public void dowork() {
int [] array = new int[10000];
for(int i = 0; i<array.length;i++) {
array[i] =(int)(Math.random()*10000);
}
int tmp = 0;
for(int i = 0 ;i<array.length;i++) {
for(int j = i+1;j<array.length;j++) {
if(array[i] > array[j]) {
tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
}
}
}
class BubbleSort extends TemplateDesign {
//具体测试
@Override
public void dowork() {
int [] array = new int[10000];
for(int i = 0; i<array.length;i++) {
array[i] =(int)(Math.random()*10000);
}
int tmp = 0;
for(int i = 0 ;i<array.length;i++) {
for(int j = 0;j<array.length-i-1;j++) {
if(array[j] > array[j+1]) {
tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
}
}
}
}