浅析Java IO 设计模式之—装饰器模式

浅析Java IO 设计模式之—装饰器模式

1        浅谈装饰器模式:(以下内容摘自《java与模式》)

     装饰器模式(Decotator)又名包装(Wrapper)模式。包装模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。

   装饰器模式以对客户透明的方式动态地给一个对象附加上更多的责任。换而言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰器模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。

   装饰器的类图如下图所示:

 

   在装饰模式中的各个角色有:

1)  抽象构件(Component)角色:给出一个抽象接口,以规范准备接受附加责任的对象。

2)  具体构件(Concrete Component)角色:定义一个将要接受附加责任的类。

3)  装饰(Decorator)角色:持有一个构件(Componet)对象的实例,并定义一个与抽象构件接口一致的接口。

4)  具体装饰(Concrete Decorator)角色:负责给构件对象“贴上”附加的责任。

    注:如果你想要深入了解装饰器模式,推荐学习《java与模式》第26章

2        浅谈Java IO:

Java类库中的I/O类分为输入和输出两部分。InputStream 或Reader派生而来的类都含有read()方法,用于读取单个字节或者字节数组。OutputStream或者Writer派生而来的类都含有write()基本方法,用于写单个字节或者字节数组。

1)基于字节的输入流  


2
)基于字节的输出流 
 


3
)基于字符的输入流 


 4)基于字符的输出流 

 

 

3  JavaIO类图与装饰器模式分析:

OutputStream

   举例:完成一个对FileOutPutStream的包装:


 InputStream类图

举例:对FileInputStream进行包装,使其具有dataInpuStream与BufferedInputStream的功能。


 对于InputStream和OutputStream来说,我们会使用FilterInputStream和FilterOutputStream的装饰器子类来修改(或者说包装)“流”以满足特殊需要。Reader和Writer的类继承层次结构沿用相同的思想----但是并不完全相同。

  Reader与Writer的类图:

 

 总结及个人心得:

   首先从文件、网络、内存等得到流后,根据需要进行相应的包装,使其具有更加丰富的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值