Java設計模式-5.模板設計模式
阿新 • • 發佈:2018-12-14
模板設計模式
1、模版設計模式概述
- 模版設計模式,就是定義一個演算法的骨架,而將具體的演算法延遲到子類中來實現。
- 優點:使用模板設計模式,在定義演算法骨架的同時,可以很靈活的實現具體的不同演算法,滿足使用者靈活多變的需求。
- 缺點:如果演算法骨架有修改的話,則需要修改抽象類。
2、模板設計模式舉例
需求:計算出一段程式碼的執行時間。
(1)模板模式類:GetTime.java
package cn.itcast_01; public abstract class GetTime { // 需求:請給我計算出一段程式碼的執行時間 public long getTime() { long start = System.currentTimeMillis(); // for迴圈 // 視訊 // 再給我測試一個程式碼:集合操作的,多執行緒操作,常用API操作的等等... code(); long end = System.currentTimeMillis(); return end - start; } public abstract void code(); }
(2)for迴圈的時間
package cn.itcast_01;
public class ForDemo extends GetTime {
@Override
public void code() {
for (int x = 0; x < 100000; x++) {
System.out.println(x);
}
}
}
(3)複製視訊的時間
package cn.itcast_01; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; 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)模板測試類:GetTimeDemo.java
package cn.itcast_01;
public class GetTimeDemo {
public static void main(String[] args) {
GetTime gt = new ForDemo();
System.out.println(gt.getTime() + "毫秒");
gt = new IODemo();
System.out.println(gt.getTime() + "毫秒");
}
}