1. 模板设计模式是定义
模版方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类中来实现
2. 模板设计模式优点
使用模版方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求
3. 模板设计模式缺点
如果算法骨架有修改的话,则需要修改抽象类
4.下面用例子说明,假如我们要获取复制一个视频和一个for循环的时间
1)定义一个获取时间的类和方法
public abstract class GetTime {
// 需求:请给我计算出一段代码的运行时间
public long getTime() {
long start = System.currentTimeMillis();
//这里面可以放入你想测试的运行程序的时间
code();
long end = System.currentTimeMillis();
return end - start;
}
public abstract void code();
}
2)计算for循环的时间,需要基础GetTime(),并实现code()方法
public class ForDemo extends GetTime {
@Override
public void code() {
for (int x = 0; x < 100000; x++) {
System.out.println(x);
}
}
}
3)计算复制视频的时间,需要基础GetTime(),并实现code()方法
public class IODemo extends GetTime{
@Override
public void code() {
try {
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream("a.avi"));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream("b.avi"));
byte[] bys = new byte[1024];
int len = 0;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
}
bos.close();
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
4)编写测试类
public class GetTimeDemo {
public static void main(String[] args) {
// GetTime gt = new GetTime();
// System.out.println(gt.getTime() + "毫秒");
GetTime gt = new ForDemo();
System.out.println(gt.getTime() + "毫秒");
gt = new IODemo();
System.out.println(gt.getTime() + "毫秒");
}
}
5.总结
如果要计算其他程序的时间,就可以运用上面的计算for和视频复制的思想编写相应的类