码迷,mamicode.com
首页 > 编程语言 > 详细

Java设计模式之模板方法模式或者说模板设计模式(属于行为型)

时间:2015-05-02 18:12:49      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

抽象类,不变的代码写了,要变化的部分留给子类去实现:

package 行为型_模板方法模式;

//模板设计模式的意思是把不变定位部分写出来,变化的部分留给子类去实现
public abstract class GetTime {
	public long getTime() throws Exception{
		long start = System.currentTimeMillis();//开始时间
		
		/*
		//for循环
		for(int i=0;i<10000;i++){
			System.out.println(i);
		}*/
		
		/*
		//视频  /设计模式/src/avi/a.avi
		BufferedInputStream input= new BufferedInputStream(new FileInputStream("/设计模式/src/avi/a.avi"));
		BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream("b.avi"));
		byte[] b = new byte[1024];
		int len=0;
		while((len=input.read(b))!=-1){
			output.write(b,0,len);
		}
		output.close();
		input.close();
		
		//再給我测试一个代码:集合操作的多线程操作,常用API,那么你也还要写代码吗,麻烦!!!!!!!!!!!!!!!!
		*/
		
		code();//子类去写
		
		long end = System.currentTimeMillis();//结束时间
		return end-start;
	}
	//写一个抽象的方法,子类自己去实现方法的具体操作(内容)
	
	public abstract void code();//留给子类实现

}

For循环求运行时间类:

package 行为型_模板方法模式;

public class ForGetTime extends GetTime{

	@Override
	public void code() {
		for(int i=0;i<10000;i++){
			System.out.println(i);
		}
	}

}

IO流读取视频,求其运行时间的类:

package 行为型_模板方法模式;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class IOGetTime extends GetTime{

	@Override
	public void code(){
		try {
			BufferedInputStream input = new BufferedInputStream(new FileInputStream("avi/a.avi"));
			BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream("b.avi"));
			byte[] b = new byte[1024];
			int len=0;
			while((len=input.read(b))!=-1){
				output.write(b,0,len);
			}
			output.close();
			input.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

测试类:

package 行为型_模板方法模式;

public class GetTimeMain {
	public static void main(String[] args) throws Exception {
//		GetTime gTime = new GetTime();
//		System.out.println(gTime.getTime()+"毫秒");
	
		//面向抽象编程
		GetTime gt = new ForGetTime();
		System.out.println(gt.getTime()+"毫秒");
	
		//重新赋值为读取的是IO流.avi
		gt = new IOGetTime();
		System.out.println(gt.getTime()+"毫秒");
		
	}

}


Java设计模式之模板方法模式或者说模板设计模式(属于行为型)

标签:

原文地址:http://blog.csdn.net/u012110719/article/details/45440881

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!