設計模式-模版設計模式概述和使用-抽象類
模版設計模式概述
模版方法模式就是定義一個演算法的骨架,而將具體的演算法延遲到子類中來實現
優點
使用模版方法模式,在定義演算法骨架的同時,可以很靈活的實現具體的演算法,滿足使用者靈活多變的需求
缺點
如果演算法骨架有修改的話,則需要修改抽象類
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() + "毫秒");
}
}
相關文章
- 設計模式——模版方法模式設計模式
- 模版方法設計模式設計模式
- 設計模式DP-模版模式設計模式
- 設計模式 - 概述設計模式
- 設計模式:Builder模式概述設計模式UI
- 設計模式——抽象工廠模式設計模式抽象
- 設計模式 —— 抽象工廠模式設計模式抽象
- 設計模式-抽象工廠模式設計模式抽象
- 設計模式第一講-模版方法模式設計模式
- Java設計模式-抽象工廠模式Java設計模式抽象
- java設計模式–抽象工廠模式Java設計模式抽象
- 設計模式 - 抽象工廠設計模式抽象
- 設計模式----抽象工廠設計模式抽象
- 設計模式 – 抽象工廠設計模式抽象
- 設計模式:抽象工廠模式,結合類圖秒懂!設計模式抽象
- Java設計模式(一):設計模式概述、UML圖、設計原則Java設計模式
- 【java設計模式】(10)---模版方法模式(案例解析)Java設計模式
- 設計模式(三)抽象工廠方法模式設計模式抽象
- 23種設計模式(抽象工廠模式)設計模式抽象
- 建立型設計模式——抽象工廠模式設計模式抽象
- golang設計模式之抽象工廠模式Golang設計模式抽象
- 設計模式系列之「抽象工廠模式」設計模式抽象
- Java設計模式學習筆記(一) 設計模式概述Java設計模式筆記
- 設計模式——把類作為引數的抽象工廠模式設計模式抽象
- 15.模版模式設計思想模式
- 設計模式之概述篇設計模式
- 設計模式-抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式學習(六)-抽象工廠模式設計模式抽象
- 設計模式--抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- Java常用設計模式之抽象工廠模式Java設計模式抽象
- java 設計模式6原則 介面,抽象類區別Java設計模式抽象
- Head First 設計模式 —— 09. 模版方法 (Template Method) 模式設計模式
- 人人都會設計模式—模版方法模式–Template-Method設計模式
- 設計模式——抽象工廠實驗設計模式抽象
- Rust語言之GoF設計模式:抽象工廠模式RustGo設計模式抽象
- 設計模式快速學習(二)抽象工廠模式設計模式抽象
- 設計模式學習(二)工廠模式——抽象工廠模式設計模式抽象
- Java 設計模式之工廠方法模式與抽象工廠模式Java設計模式抽象
- 重學 Java 設計模式:實戰抽象工廠模式Java設計模式抽象