模板设计模式

模板设计模式概述
    模板方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类中来实现
优点:
    使用模板方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求
缺点:
    如果算法骨架有修改的话,需要修改实现类

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();
        }
        
    }

}
原文地址:https://www.cnblogs.com/aigeileshei/p/5609215.html