`
zhoucl
  • 浏览: 49918 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java I/O之Decorator模式

    博客分类:
  • Java
阅读更多

      Java编程有一段时间了,但是一直都感觉挺浮躁的,对基础知识没有真正好好的看一下,总是要的时候就是Google、百度,以至于以前用过的东西很快就忘了,每次都得打开资料文件再去阅读,因此决定现在重温一下基础知识,并且在博客上复习过程做一个记录,加深自己的记忆!

      Java I/O即Java 输入输出,在Jdk占据着较为重要的地位,关于程序的描述中,输入和输出都比较重要的地位的,因此这几天就依着Java I/O库,顺藤摸瓜并且结合前段学习设计模式的时候对设计模式的理解,对Java I/O中使用的较为普遍的设计模式拿出来做个简要的记录,当然这些在网络上很多地方都有~~废话少说,直接进入主题吧!~~

1、Decorator模式

Decorator:常被翻译成”装饰", 觉得翻译成"油漆工"更形象店,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee,这两种实体在Decorator模式中是必须的。

1.1、定义:动态给一个对象添加一些额外的职责,就像在墙上刷油漆,使用Decorator模式相比用生成子类的方法达到功能的扩充显得更为灵活。

1.1、Decorator模式对应的简单UML,如下所示:


 2、Java I/O Decorator

在Java I/0操作中,经常使用到得一段程序如下:

try {
			OutputStream os = new FileOutputStream(new File("demo.txt"));
			DataOutputStream dos = new DataOutputStream(os);
			... ...
} catch (FileNotFoundException e) {
			e.printStackTrace();
}

上面的程序很容易联想到似曾熟悉的哪个设计模式,通过阅读Java I/O的源码,可以确定使用的是23种设计模式之一——Decorator Pattern,并且得到相应的UML图:


至此,相应的设计模式的探索已经得到,至于使用的细节,可以去参考JDK或者去阅读源码。

注:下一篇将记录Java I/O中使用的另外一种设计模式:适配器(Adapter)-----http://zhoucl.iteye.com/blog/1113183

 

  • 大小: 18.3 KB
  • 大小: 31.6 KB
分享到:
评论

相关推荐

    Java I/O总结

    5. **装饰者模式的应用**:在Java I/O中,装饰者模式被广泛应用于构建复杂的流管道,如上文中提到的`BufferedReader`就是一个典型的例子,它装饰了一个`InputStreamReader`,后者又装饰了一个`InputStream`。...

    Java类库中Decorator模式的应用研究.pdf

    本文将详细介绍Decorator模式的概念、应用场景及其在Java I/O系统中的具体实现。 #### 二、Decorator模式简介 **Decorator模式**是一种结构型设计模式,主要用于在不修改原始类的基础上动态地给一个对象添加额外的...

    Java-从Decorator,Adapter模式看Java/IO

    在Java/IO库中,Decorator模式被广泛用于流处理器的链接和功能增强。例如,`DataInputStream`是一个装饰器,它包装了一个`FileInputStream`,并将字节流转换为Java的原始类型和字符串。类似地,`BufferedInputStream...

    java-io-decorator.pdf

    Java I/O装饰器模式是Java I/O库中实现的一种设计模式,用于动态地给一个对象添加额外的职责。装饰器模式在GoF(Gang of Four)的《设计模式:可复用面向对象软件的基础》一书中被提出,并且广泛应用于多种编程语言中...

    Java设计模式之装饰模式(Decorator模式)介绍

    Java设计模式中的装饰模式(Decorator模式)是一种结构型设计模式,它允许在运行时向对象添加新的行为或责任,而不必通过子类化的方式。这种模式对于系统扩展性和灵活性至关重要,因为它避免了创建大量子类来实现...

    设计模式--装饰者模式java例子

    在Java的I/O流体系中,如BufferedInputStream和DataInputStream等,就广泛使用了装饰者模式。 ### 四、装饰者模式的优势 1. **灵活性**:装饰者模式允许我们在运行时动态地添加或移除对象的功能,避免了对类层次的...

    设计模式之Decorator

    在实际应用中,Java I/O流类库广泛使用了装饰器模式,例如BufferedInputStream、DataInputStream等都是InputStream的装饰者。此外,Spring框架中的AOP(面向切面编程)也借鉴了装饰器模式的思想,通过代理类动态增强...

    Java装饰模式(Decorator模式)

    Java装饰模式,也被称为Decorator模式,是一种设计模式,它允许在运行时向对象添加新的行为或职责,而不必通过继承的方式来扩展类。这种模式提供了一种比使用子类更加灵活的方式来扩展对象的功能。 装饰模式的核心...

    java设计模式之装饰器模式(Decorator)

    装饰器模式(Decorator)是Java设计模式中的一种结构型模式...在Java中,诸如`InputStream`、`OutputStream`等I/O流类库就大量应用了装饰器模式。通过合理使用装饰器模式,开发者可以创建出更灵活、可扩展的软件架构。

    Java装饰器设计模式_动力节点Java学院整理

    在 Java 的 I/O API 中,也使用了装饰器设计模式来实现输入输出操作。例如,InputStream 和 OutputStream 中的 decorate 方法就是使用了装饰器设计模式。 Java 装饰器设计模式是一种非常有用的设计模式,它可以使得...

    java与模式,设计模式的应用

    3. 装饰器模式:Java I/O流中的装饰器模式,允许在运行时动态地给对象添加新的行为。例如,BufferedReader和PrintWriter就是对InputStream和OutputStream的装饰。 4. 适配器模式:在Java Swing中,JDBC驱动程序接口...

    10道Java面试必备的设计模式面试题!.zip

    在Java I/O系统中广泛应用,如`BufferedReader`和`PrintWriter`。 5. **策略模式(Strategy)**:定义一系列算法,将每一个算法封装起来,使它们可以互相替换,让算法的变化独立于使用算法的客户。Java的`...

    Java设计模式之修饰模式篇(1).docx

    修饰模式(Decorator Pattern)是一种结构型设计模式,它允许在运行时向对象添加新的行为或职责,而无需修改对象的原始代码。这种模式在Java等面向对象语言中广泛应用,提供了比继承更加灵活的扩展性。 在Java中,...

    10、JavaSE:IO流.pdf

    在使用流进行I/O操作时,可以对流进行嵌套组合使用,例如使用装饰器模式(Decorator Pattern),为原始流添加额外的功能,如缓冲、数据转换等。 总之,Java I/O流为数据的输入输出提供了一套强大的工具,使得数据...

    java编程模式与范例:高级应开发

    8. **I/O流**:Java的I/O流系统提供了处理输入输出的强大工具,包括字符流和字节流,以及缓冲流、转换流、对象流等。掌握流的概念和用法对于处理文件操作、网络通信等任务至关重要。 9. **Java虚拟机(JVM)优化**...

    JAVA设计模式

    Java I/O流体系中的装饰器模式非常典型,如BufferedReader、DataInputStream等。 9. 外观模式(Facade):外观模式为子系统提供了一个统一的接口,使得客户端不必关心子系统内部的复杂性。在Java Swing和JavaFX库中...

    设计模式以及完整Java列子演示

    在Java中,I/O流的实现就是一个很好的装饰器模式的例子。 6. 适配器模式(Adapter Pattern):将两个不兼容的接口转换为兼容的接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。Java中,我们可以...

    设计模式面试专题及答案..docx

    Java I/O流中的`BufferedReader`和`BufferedWriter`就是装饰模式的应用,它们装饰了`Reader`和`Writer`,提供了缓冲功能。 5. 使用工厂模式的好处:增加了创建对象时的封装性,便于替换产品实现,无需更改调用者...

    Headfirst设计模式中文高清PDF+附书源码

    在Java中,I/O流类库广泛使用了装饰器模式。 5. **代理模式**(Proxy):为其他对象提供一种代理以控制对这个对象的访问。Java的动态代理机制实现了接口代理,可以用来创建业务层的代理服务。 6. **适配器模式**...

Global site tag (gtag.js) - Google Analytics