装饰模式(Decorator)
来源:互联网 发布:creis中指数据 账号 编辑:程序博客网 时间:2024/05/01 22:29
装饰模式(Decorator)
扩展对象的功能,即扩展出来的对象的功能强大了, 而继承是扩展类的功能(即子类的功能变强大了),因此,可以在不创造更多子类的情况下将对象的功能加以扩展
如:
DataOutputStream dos = new DataOutputStream( new BufferedOutputStream(new FileOutputStream(new File(path))));
装饰后对象功能更强了(又带缓冲,又带文件输出)
装饰模式在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象(wrapper),来包裹真实的对象
类图:
/** * 公共输入的接口 * @author Lyn */public interface InputStream { public int read();} /** * 文件输入流(是一种节点流) * 其它的如: ByteArrayInputStream * @author Lyn */public class FileInputStream implements InputStream { @Override public int read() { System.out.println("FileInputStream:文件输入流组件,我是节点流....到文件系统上去读..."); return 0; }} /** * 抽象过滤流,此类把 读的任务交给传进来的 InputStream对象去读 * @author Lyn * */ public class FilterInputStream implements InputStream { private InputStreamis; // 真正交给该对象去读数据 public FilterInputStream(InputStream is){ this.is = is; } @Override publicint read() { System.out.println("================"); System.out.println(this.getClass()); System.out.print("我是 FilterInputStream 抽象过滤流,读的任务交给传进来的InputStream,即:"); System.out.println(is.getClass()); System.out.println("================"); return this.is.read(); }}/** * 带缓冲的输入流 * 功能:把读的任务交给父类去读,读到数据后,在它的基础上加上自己的功能,即加上缓冲的功能 * ( 因为父类又交给传进来的 InputStream去读,所以,总的就交给了传进来的InputStream去读) * @authorlyn * */public class BufferedInputStream extends FilterInputStream { public BufferedInputStream(InputStream is) { super(is); } @Override public int read() { super.read(); //交给传进来的 InputStream去读 this.doBuffer(); //加上自己会缓冲的功能 return 0; } private void doBuffer(){ System.out.println("在读到的数据加上 缓冲的功能"); } } /** * 与机器无关读取基本 Java数据类型功能的输入流 * * 功能:把读的任务交给父类去读,读到数据后,在它的基础上加上自己的功能,即加上与机器无关读取基本 Java 数据类型功能 * * ( 因为父类又交给传进来的 InputStream去读,所以,总的就交给了传进来的InputStream去读) * @author lyn * */public class DataInputStream extends FilterInputStream { public DataInputStream(InputStream is) { super(is); } @Override publicint read() { super.read(); //交给传进来的 InputStream去读 this.doData(); //加上与机器无关读取基本 Java数据类型功能 return 0; } privatevoid doData(){ System.out.println("在读到的数据加上 与机器无关读取基本 Java数据类型功能 "); } }
- 装饰模式Decorator Pattern
- 装饰(Decorator)模式
- 装饰模式(Decorator Pattern)
- 装饰(Decorator)模式
- 装饰模式:Decorator
- 装饰模式(Decorator)
- 装饰模式(Decorator Pattern)
- 装饰模式Decorator
- Decorator 装饰者模式
- 装饰模式(Decorator)
- 装饰模式(Decorator)
- DECORATOR (装饰)模式
- Decorator装饰模式
- 装饰器(Decorator)模式
- 装饰模式(Decorator)
- Decorator(装饰)模式
- 装饰者模式(Decorator)
- 装饰模式Decorator
- 开启CSDN之旅
- 《黑马程序员》了解java中的注解
- C++编程思想笔记——引用和拷贝构造函数
- POJ 2031 Building a Space Station
- DB2 SQL性能调优秘笈
- 装饰模式(Decorator)
- MySQL技术内幕:InnoDB存储引擎(第2版)
- Struct 与 type struct
- 数据挖掘与数据化运营实战:思路、方法、技巧与应用
- linq返回值获取对象
- [经典]Linux内核中ioremap映射的透彻理解 .
- Django中扩展TinyMCE使其支持图片上传功能
- oracle完全卸载
- IE9自动指向http://windows.microsoft.com/zh-CN/internet-explorer/products/ie-9/welcome-upgrade2的解决办法