设计模式-模版设计模式概述和使用-抽象类

来源:互联网 发布:自己的淘宝账号查询 编辑:程序博客网 时间:2024/05/22 11:43

模版设计模式概述

模版方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类中来实现

优点

使用模版方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求

缺点

如果算法骨架有修改的话,则需要修改抽象类

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 abstract class GetTime {// 需求:请给我计算出一段代码的运行时间public long getTime() {long start = System.currentTimeMillis();// for循环// for (int x = 0; x < 10000; x++) {// System.out.println(x);// }// 复制视频// 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();// }// 再给我测试一个代码:集合操作的,多线程操作,常用API操作的等等...是变化的code();long end = System.currentTimeMillis();return end - start;}public abstract void code();}
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{@Overridepublic 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();}}}
package cn.itcast_01;public class ForDemo extends GetTime {@Overridepublic void code() {for (int x = 0; x < 100000; x++) {System.out.println(x);}}}
package cn.itcast_01;public class GetTimeDemo {public static void main(String[] args) {// GetTime gt = new GetTime();// System.out.println(gt.getTime() + "毫秒");GetTime gt = new ForDemo();System.out.println(gt.getTime() + "毫秒");gt = new IODemo();System.out.println(gt.getTime() + "毫秒");}}

阅读全文
0 0