Java设计模式-装饰器模式
来源:互联网 发布:淘宝退货卖家说我调包 编辑:程序博客网 时间:2024/05/29 09:20
如果想要扩充一个类的功能,你会打算怎么做?
- 从原有类改写代码,相信这是大家最容易想到的办法,但是这个办法有很多弊端,不能复用是它最致命的缺点,灵活性太差。
- 写一个子类去继承它,在子类扩充功能。但是还是不够灵活。
- 使用组合方式,把Component接口(或者抽象类)作为Decorator接口(或者抽象类)的一个属性,Decorator extends Component,Decorator的Operation()方法转发Component的Operation()方法,
ConcreteDecoratorA和ConcreteDecoratorB是Decorator的实现类,实现Operation()方法时,可以增加
OperationPre()方式和OprationLater()方法,实现扩充功能。
- Java中的IO是明显的装饰器模式的运用。
Component:InputStream,OutputStream,Reader,Writer
ConcreteComponent:FileInputStream(从文件中读取数据流)
Decorator:FilterInputStream,FilterOutputStream,FilterRead,FilterWriter
ConcreteDecorator:BufferedInputStream(提供一个内存的缓冲区类保存输入流中的数据)
我们经常会看到如下:
//file为某个具体文件的File或者FileDescription对象 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
0 0
- Java 装饰器设计模式
- java设计模式:装饰器模式[Decorator]
- java设计模式:装饰器模式[Decorator]
- java设计模式---装饰器模式
- java设计模式---装饰器模式
- Java设计模式之装饰器模式
- java设计模式之装饰器模式
- Java设计模式 - 装饰器模式
- java 策略设计模式 装饰器模式
- java设计模式--装饰器模式
- Java设计模式之装饰器模式
- Java设计模式之装饰器模式
- Java设计模式12:装饰器模式
- Java设计模式-装饰器模式
- java设计模式之装饰器模式
- 【Java设计模式】- 装饰器模式
- Java 设计模式_装饰器模式
- java模式设计之装饰器模式
- git checkout -- filename的作用
- Linux CentOS6.X 升级python2.6到python2.7
- Spring 的注解@Transactional 配置项 eadOnly 有什么作用?
- Stack Overflow Developer Survey 2016 Results(2016stack overflow 开发者调查报告)
- Tensorflow学习笔记--RNN精要及代码实现
- Java设计模式-装饰器模式
- java 常用的class
- Mysql-各种锁区分与【MVCC】
- 重叠IO模型 - 异步IO
- 通过Eclipse手动部署项目到Tomcat中的两种方式
- Spring MVC 环境搭建(一)
- UVa220
- ubuntu终端进出root权限
- 决策树-ID3算法