java IO中的装饰器模式图解
从网上找了张图,很详细的表达了IO中的装饰器模式内容。
(如果不清晰,右键 选择在新标签页打开即可)
先说核心,装饰器模式是用组合代替继承,达到灵活扩展的目的。
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。
这是jdk源码FilterInputStream的类部分截图,可以清楚的看到FilterInputStream组合了InputStream。FilterInputStream又继承了InputStream。这有啥用?
BufferedInputStream里面可以套一个FileInputStream吧,套完以后还是一个InputStream吧,那继续套呗,功能一直增强,这下懂了吧,这就是java类库设计人员的强大。
提一嘴,IO中还运用了模板设计模式,InputStream这个抽象类写好了基础方法,其他具体类去实现它,比如read()方法。
java类库博大精深,越看越感动自己的渺小,其实这时你已经进步了。坚持下去吧!