为什么是装饰模式而不是继承
来源:互联网 发布:数据分级 英语 编辑:程序博客网 时间:2024/05/17 16:43
对于java IO而言
对于是否需要缓存算一个需求的话(两种情况),读取的流的类型是了另一个需求(两种情况),输入还是输出又是一个需求如果采用继承的话(两种情况),需要的类有:
带缓存/字节型/输入流;
带缓存/字节型/输出流;
带缓存/字符型/输入流;
带缓存/字符型/输出流;
不带缓存/字节型/输入流;
不带缓存/字节型/输出流;
不带缓存/字符型/输入流;
不带缓存/字符型/输出流;
这里只考虑了几情况已经需要继承的类的数量已经开始变得非常大(实际上,数量是每方面的可能相乘,2*2*2)。
如果采用装饰模式,一旦你觉得需要增加一个功能,那你只需要将现有的类作为参数传入到构造函数就行:
File file=new File("/home/lxx/test");FileInputStream fi=new FileInputStream(file);//这时候,你认为需要一个带缓存的文件输入流BufferedInputStream bis=new BufferedInputStream(fi);
也就是说,不再需要对所有的类型进行组合,而是对每种单方面的类型创造一个类就可以。
阅读全文
0 0
- 为什么是装饰模式而不是继承
- 为什么是GeoRSS而不是GML
- 为什么是MindPedia,而不是其它
- 为什么是我而不是别人?
- 为什么说java中的io流是装饰器模式
- 为什么要优先使用组合 而不是继承?
- 为什么优先使用组合而不是继承
- 【共享经济】为什么共享衣橱用的是B2C而不是C2C模式?
- 为什么崛起的是日本而不是中国
- C++为什么是C++而不是++C
- struts2-为什么是struts而不是servlet+jsp
- 为什么输出是String而不是Object
- TCP为什么是三次握手,而不是两次
- 为什么是“深度”学习而不是宽度?
- spring注入时bean的set方法为什么不能是static类型的?(为什么要用单例模式而不是静态方法)
- 《再探设计模式》装饰者:为什么比继承更灵活?
- 为什么要用单例模式而不是静态方法
- 为什么要用单例模式而不是静态方法
- 任务计划
- Taxi Fare
- Segmentation obtained by thresholding the UCM at certain level
- [Leetcode] 41, 75, 34
- hdu6147 模拟
- 为什么是装饰模式而不是继承
- python 程序运行时间
- Leetcode Best Time to Buy and Sell Stock
- hdu2391Filthy Rich(动态规划基础)
- idea热部署静态资源无法及时生效
- Python单元测试(doctest和unittest)
- nodejs express template (模版)的使用 (ejs + express)
- JavaScript权威指南读书笔记——第十七章 事件处理
- C++ 带空格的字符串输入