zoukankan      html  css  js  c++  java
  • 模板设计模式

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

    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();
            }
            
        }
    
    }
  • 相关阅读:
    很有意思的“老黄历”网站
    ubuntu
    getopt在Python中的使用
    系统变量TERM不知是用来干什么的?它的值有vt100,vt220等,这些值代表什么意思?
    >/dev/null 2>&1
    linux下常用的ftp服务器软件
    Windows环境下访问NFS
    linux iSCSI target配置全过程
    iSCSI target在安全方面相关设定
    folly学习心得
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5609215.html
Copyright © 2011-2022 走看看