模板设计模式概述
模板方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类中来实现
优点:
使用模板方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求
缺点:
如果算法骨架有修改的话,需要修改实现类
package com.model; 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() throws IOException{ long start=System.currentTimeMillis(); // for(int i=0;i<10000;i++){ // System.out.println(i); // } // String str="C:\Users\Administrator.PMIMP83HWNIKWOV\Desktop\【批量下载】27.02_反射(类加载器的概述和分类)等\传智播客视频\Java视频\JAVA基础篇\day27\avi\27.01_反射(类的加载概述和加载时机).avi"; // BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("copy.avi")); // BufferedInputStream bis=new BufferedInputStream(new FileInputStream(str)); // byte[] bys=new byte[1024]; // int len=0; // while((len=bis.read(bys))!=-1){ // bos.write(bys, 0, len); // } //再给我测试一个操作,集合框架的、多线程操作的..... //我们应该学会使用开闭原则。所以里面测试的内容应该是一个代码块、方法 code(); long end=System.currentTimeMillis(); return end-start; } public abstract void code(); } package com.model; public class ForDemo extends GetTime{ @Override public void code() { for(int i=0;i<10000;i++){ System.out.println(i); } } } package com.model; import java.io.IOException; public class GetTimeDemo { public static void main(String[] args) throws IOException { // GetTime gt=new ForDemo(); GetTime gt=new IODemo(); long time=gt.getTime(); System.out.println("花费"+time+"毫秒"); } } package com.model; 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() { String str="C:\Users\Administrator.PMIMP83HWNIKWOV\Desktop\【批量下载】27.02_反射(类加载器的概述和分类)等\传智播客视频\Java视频\JAVA基础篇\day27\avi\27.01_反射(类的加载概述和加载时机).avi"; try{ BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("copy.avi")); BufferedInputStream bis=new BufferedInputStream(new FileInputStream(str)); 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(); } } }