java io流之 装饰模式

初学java.io的时候容易被众多的IO类搞晕头,其实java.io还是很容易理解的,主要就是通过装饰模式来进行功能的扩充。
扩充基类的功能,一般我们都是通过继承来解决的,但是继承会造成类的膨胀,而使用装饰模式就不会。其实装饰模式就是在扩展类里面搞了个被扩展类的引用而已。

package design.decorator;

/**
* “装饰模式(Decorator)”又名“包装模式(Wrapper)”,通常用来灵活地扩充对象的功能。
* 在此之前我们可以通过类的继承来扩充父类的功能,但这种继承方式缺乏灵活性
* ,并且会导到子类数量的快速膨胀。恰当地使用装饰模式我们会轻松实现在控制子类数量的基础上,灵活地实现对象功能的扩展。装饰模式比类的继承更灵活。
*/
public class Test {
public static void main(String[] args) {
FileInputStream in = new FileInputStream(new InputStream());
in.read();
}
}

class InputStream {
public void read() {
System.out.println("InputStream.read");
}
}

class FileInputStream extends InputStream {
protected InputStream in;

public FileInputStream(InputStream in) {
super();
this.in = in;
}

public void read() {
//文件流可以对基本的流进行包装一下
in.read();
System.out.println("FileInputStream.read");
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值