設計模式-模版設計模式概述和使用-抽象類
模版設計模式概述
模版方法模式就是定義一個演算法的骨架,而將具體的演算法延遲到子類中來實現
優點
使用模版方法模式,在定義演算法骨架的同時,可以很靈活的實現具體的演算法,滿足使用者靈活多變的需求
缺點
如果演算法骨架有修改的話,則需要修改抽象類
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 abstract class GetTime {
// 需求:請給我計算出一段程式碼的執行時間
public long getTime() {
long start = System.currentTimeMillis();
// for迴圈
// for (int x = 0; x < 10000; x++) {
// System.out.println(x);
// }
// 複製視訊
// 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();
// }
// 再給我測試一個程式碼:集合操作的,多執行緒操作,常用API操作的等等...是變化的
code();
long end = System.currentTimeMillis();
return end - start;
}
public abstract void code();
}
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();
}
}
}
package cn.itcast_01;
public class ForDemo extends GetTime {
@Override
public void code() {
for (int x = 0; x < 100000; x++) {
System.out.println(x);
}
}
}
package cn.itcast_01;
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() + "毫秒");
}
}
相關文章
- 設計模式——模版方法模式設計模式
- 模版方法設計模式設計模式
- java抽象類與介面——設計模式Java抽象設計模式
- 設計模式-裝飾模式概述和使用-IO流設計模式
- 設計模式DP-模版模式設計模式
- 設計模式 - 概述設計模式
- 設計模式:Builder模式概述設計模式UI
- 設計模式——抽象工廠模式設計模式抽象
- 設計模式 —— 抽象工廠模式設計模式抽象
- 設計模式-抽象工廠模式設計模式抽象
- 設計模式-簡單工廠模式概述和使用-介面設計模式
- 設計模式-工廠方法模式的概述和使用-介面設計模式
- 設計模式第一講-模版方法模式設計模式
- 23種設計模式之模版方法模式設計模式
- 設計模式知識梳理(1) 設計模式概述設計模式
- java設計模式–抽象工廠模式Java設計模式抽象
- Java設計模式-抽象工廠模式Java設計模式抽象
- 設計模式系列·抽象工廠模式設計模式抽象
- 設計模式(十三)抽象工廠模式設計模式抽象
- 設計模式(四)——抽象工廠模式設計模式抽象
- 【設計模式】設計模式的分類設計模式
- 設計模式:抽象工廠模式,結合類圖秒懂!設計模式抽象
- 設計模式----抽象工廠設計模式抽象
- 設計模式 – 抽象工廠設計模式抽象
- 設計模式 - 抽象工廠設計模式抽象
- Java設計模式(一):設計模式概述、UML圖、設計原則Java設計模式
- 【java設計模式】(10)---模版方法模式(案例解析)Java設計模式
- golang設計模式之抽象工廠模式Golang設計模式抽象
- 設計模式系列之「抽象工廠模式」設計模式抽象
- 設計模式(三)抽象工廠方法模式設計模式抽象
- 建立型設計模式——抽象工廠模式設計模式抽象
- 23種設計模式(抽象工廠模式)設計模式抽象
- python設計模式-抽象工廠模式Python設計模式抽象
- 大話設計模式:抽象工廠模式設計模式抽象
- C# 設計模式----抽象工廠模式C#設計模式抽象
- Java設計模式學習筆記(一) 設計模式概述Java設計模式筆記
- 設計模式——把類作為引數的抽象工廠模式設計模式抽象
- 設計模式之概述篇設計模式