您的位置:首页 > 编程语言 > Java开发

JAVA 装饰类(装饰设计模式)

2013-03-24 21:20 281 查看
//仅作为学习笔记

/*
装饰设计模式
当想要对已有的对象进行功能增强时
可以定义类 将已有的对象传入 基于已有的功能 并提供加强功能
那么自定义的该类称为装饰类

装饰类通常会通过构造方法接受装饰的对象
并基于被装饰的对象的功能 提供更强的功能

装饰设计模式与继承的区别
与装饰设计模式相比较 继承的类扩展性很差
装饰设计模式通过多态的形式,提高了扩展性。
装饰模式比继承要灵活 避免了继承体系的臃肿
而且降低了类与类之间的关系

装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强的功能
所以装饰类和被装饰类通常都属于一个体系中

*/

import java.io.*;

class MyBufferedReader
{
private FileReader r;
MyBufferedReader(FileReader r)
{
this.r = r;
}

//可以一次读取一行数据的方法
public String myReadLine() throws IOException
{
//定义一个临时容器 原BufferReader 封装的是字符数组
//为了演示方便 定义一个StringBuilder容器 因为最终还是要将数据变成字符串
StringBuilder sb = new StringBuilder();

int ch = 0;

while( (ch = r.read())!= -1)
{
if(ch == '\r')
continue;
if(ch == '\n')
return sb.toString();
else
sb.append((char)ch);
}
if(sb.length()!= 0)
return sb.toString();
return null;
}

public void myClose() throws IOException
{
r.close();
}
}

class MyBufferedReaderDemo
{
public static void main(String []args) throws IOException
{
FileReader fr = new FileReader("Test.java");

MyBufferedReader myBuf = new MyBufferedReader(fr);

String line = null;

while( (line = myBuf.myReadLine())!=null)
{
System.out.println(line);
}
myBuf.myClose();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: