从Java类库看设计模式3

来源:互联网 发布:贴面膜后要洗脸吗 知乎 编辑:程序博客网 时间:2024/05/01 19:33

http://www-128.ibm.com/developerworks/cn/java/l-jdkdp/part3/index.html

关于Bridge模式:

Abstraction中有一个Implementor的引用,client直接调用RefinedAbstraction,屏蔽了实现的细节

通常的,可以在实现部分定义一些基本的原子方法,而在抽象部分则通过组合定义在实现层次中的原子方法

实现系统的功能

JR的http://www.javaresearch.org/article/showarticle.jsp?column=31&thread=41890很好的体现了这一点

http://www.javaresearch.org/article/showarticle.jsp?column=31&thread=12461说的也比较清楚

JAVA的IO是Decorator的经典应用

FilterInputStream(即Decorator类)是InputStream(即Subject类)的子类,具有同Subject相同的interface

Java中的IO还允许你引入自定义的Decorator,来实现自己想要的功能。在良好的设计背景下,这做起并不复杂,只需要4步:

  1. 创建两个分别继承了FilterInputStream和 FilterOutputStream的子类
  2. 重载read()和write()方法来实现自己想要的功能。
  3. 可以定义或者重载其它方法来提供附加功能。
  4. 确定这两个类会被一起使用,因为它们在功能上是对称的。

JR中http://www.javaresearch.org/article/showarticle.jsp?column=31&thread=39753说明如何设置统一的

interface,使得Decorator可以发挥作用

对于Decorator同继承的区别,文章中也说的比较清楚

注意:

PipedInputStream和PipedOutStream是用来多线程之间的交互(通过管道)

PrintStream只在输出时才有,所以System.err和System.out都是PrintStream的流,而System.in则是没有定义的Stream

原创粉丝点击