您的位置:首页 > 其它

设计模式_模版设计模式概述和使用

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


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() + "毫秒");
}
}

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 < 100000; 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.flush();
// }
// 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;

public class ForDemo extends GetTime {

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

}


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 {

@Override
public 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.flush();
}
bos.close();
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: