设计模式学习随笔——装饰者模式

这个模式应该是我感觉最先理解的模式,因为这个模式有一个我们经常使用的例子,就是JAVA的I/O流,以前刚开始使用Java I/O流的时候,总是不知道到底该用什么,不该用什么。后来专门去看了,然后其实大致分为了四个父类,InputStream,OutputStream,Reader,Writer。这是四个抽象类。这四个抽象类是常用的I/O类的父类。然后就是一层层实现,一层层包装,实现到FileReader  BufferReader之类的,这些其实都是一层层包装上去的。如果经常使用I/O流,就很容易理解装饰者模式,本来只是一杯水(抽象父类),如果你想要扩展,给他加点茶叶(实现成流),然后再加点话梅,青梅煮酒。

BufferedReader bufferedReader = new BufferedReader(new FileReader(file));

通过一层层包装,准确地讲,是对之前父类的不断继承,使用父类创建的对象来创建新的类,用之前的对象,构造新的对象,添加一些功能(所谓装饰就是这里)。

但其实个人而言,这种扩展性让我想到了adapter,上面的代码是纯粹的装饰者模式,始终装饰的都是reader,不断扩展的是reader。而adapter模式典型的就是从stream到reader(写这个的时候感觉有点不清楚才去百度的)。下面这一句就是典型的adapter模式,因为,Java体系中,reader writer和stream是平级的两种体系。百度了一下,这个说的是,stream是针对8位字符byte,而reader writer针对16位,中文使用后者较好。

BufferedReader bufferedReader2 = new BufferedReader(new InputStreamReader(new FileInputStream(file),"utf-8" ));

adapter和装饰者模式,也有别名,叫 包装模式(wrapper),很有意思,初学总是不知道该用什么,不该用什么,其实在我看来,对于常规的读写文件,保证安全性,易用即可。

上面提供的两句代码,可以用来读取文件中内容,最后得到的都是BufferReader,区别在于一个可以加编码,另一个只能使用工程自带编码,易用性角度一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值