Java设计模式之------装饰模式
2016-05-04 01:33
681 查看
装饰模式
装饰模式:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。例:写一个MyBufferedReader类,使它能够对字符流(如FileReader、InputStreamReader和PipedReader等)进行功能增强:
(1) 提供带缓冲的myRead()方法,对原有的read()方法进行增速;
(2)提供一个能够每次读取一行字符的myReadLine()方法。
类体系对比:
<span style="font-size:14px;">import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PipedReader; import java.io.Reader; public class MyBufferedReader extends Reader{// ★ private Reader r;// 封装 ★ 此处也可以使用FileReader或者PipedReader,此两者不需要继承,二Reader需要继承Reader private char[] buf = new char[1024]; private int count = 0;// 记录当前缓冲区中的字符个数 private int pos = 0;// 游标,数组下标,当前读取的是数组中的哪个元素 public MyBufferedReader(Reader r) { // ★ super(); this.r = r; } public int myRead() throws IOException { // 当缓冲区为空时,用r对象到文件中去读取一组数据到缓冲区中 if (count <= 0) { count = r.read(buf); if (count < 0) { return -1; } pos = 0; } // 从缓冲区中取一个字符出去 char ch = buf[pos]; pos++; count--; return ch; } public String myReadLine() throws IOException { StringBuilder strBuild = new StringBuilder(); int ch = 0; while ((ch = myRead()) != -1) { if (ch == '\r') {// 回车 continue; } if (ch == '\n') {// 换行 return strBuild.toString(); } strBuild.append((char)ch); } if (strBuild.length() != 0) { return strBuild.toString(); } return null; } public void MyClose() throws IOException { r.close(); } @Override public int read(char[] cbuf, int off, int len) throws IOException { return r.read(cbuf, off, len); } @Override public void close() throws IOException { r.close(); } } </span>
相关文章推荐
- SSH(二)~——Struts2国际化手动切换版
- java类成员访问权限总结(private,default,protected,public)
- SSH(一)~——Struts实现简单登录(附源码)
- spring4.1.1 jar包说明
- SpringMVC Controller介绍
- [Java] 实验9
- Java动态代理的异常处理问题
- 布隆过滤器(Bloom Filter)Java实现 - printk(KERN
- Eclipse中设置断点并调试
- as--eclipse迁移到as中
- 疯狂java笔记3:集合类(1)
- java中关于try、catch、finally中的细节分析
- Java获取当前时间的上一个月和下一个月,第一天和最后一天,任意时间的第一天和最后一天,任意时间上一个月和下一个月
- maven基础示例
- 什么是java序列化,如何事件java序列化
- Spring Mvc Web 配置拦截规则与访问静态资源 (三)
- DWR中各种java方法的调用
- javah 找不到 'com.***' 的类文件
- spring boot 集成 superdiamond
- Spring JMS监听器关闭问题