1. 程式人生 > >Java設計模式-5.模板設計模式

Java設計模式-5.模板設計模式

模板設計模式

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() + "毫秒");
	}
}