装饰模式和I/O分析

来源:互联网 发布:seo和sem是什么意思 编辑:程序博客网 时间:2024/06/05 00:09


装饰模式是编程中常用的设计模式之一,而关于装饰模式最典型的例子就是I/O了,在I/O中大量的运用了装饰模式,使得函数的调用更加方便简洁。

这里取输出流做例子,输出流可以当成相同的情况来看。在I/O中的FilterInputStream类就是使用了装饰模式,其中最为常见的子类就是DataInputStream和BufferedInputStream。要是用装饰模式的话首先要定义一个超类接口,如果不使用装饰模式的话就是直接实现接口,这样如果子类很多的话就要写很多的实现类,导致写了很多重复冗余的代码,而通过装饰模式则可以减少重复的代码。使用装饰模式首先需要写一个抽象类来实现超类接口,同时要重写抽象类的构造函数,使其能够得到所需装饰的对象,DataInputStream中的源码如下:

 public DataInputStream(InputStream in) {

        super(in); 

    }

在抽象类中实现基本的函数,而其他子类则可以继承抽象类,同时根据需求重写或添加相应的函数,这样就可以较为简便的完成所需。这也是为什么I/O中会用如下代码:

InputStream ins = new FileInputStream();DataInputStream dis = new DataInputStream(ins);

这便是同时装饰模式来实现I/O。

0 0
原创粉丝点击