这个例子中,ConcreteDecorator装饰了ConcreteComponent,并在其operation()方法调用前后添加了额外的功能。这展示了装饰者模式如何让我们在不修改原有类代码的情况下,动态地给对象添加新的行为。
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.HashSet; import java.util.Set; /** * * @author yylin * 读取文件时: * 一行一...
在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 类型:结构型模式 顺口溜:适装桥组享代外 二、装饰者模式UML 三、JAVA代码实现 package com.amosli.dp.structural.decorator; public abstract class Component { public abstract void opera...
9. 装饰者与适配器模式的区别 10. 关于新职责:适配器也可以在转换时增加新的职责,但主要目的不在此。装饰者模式主要是给被装饰者增加新职责的。 11. 关于其包裹的对象:适配器是知道被适配者的详细情况的(就是适配类)。装饰者只知道其接口是什么, 12. 至于其具体类型(是基类还是其他派生类)只有在运行期间才...
本文实例讲述了Java装饰者模式。分享给大家供大家参考,具体如下: 装饰模式 在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。装饰对象可以在转发这些请求以前或以后增加一些附...
在Java在。io反映非常多类包下是典型的装饰格局,例如: newBufferedOutputStream(OutputStream out) newBufferedInputStream(InputStream in); newPrintWriter(OutputStream out) newFilterReader(Reader in); 装饰类与被装饰的类 实现同样的接口, 被装饰类。不关心详细是哪个实现类来装饰它, ...
装饰者模式: 动态的将新功能附加到对象上, 在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(OCP). java的IO结构,FileInputStream就是一个装饰者 public abstract class Drink { public String desc; // 描述 private float price = 0.0f; ...
图1装饰模式例子UML图 在本例子中有一个组件的接口,具体组件和装饰者都实现了组件的接口,装饰模式的主要目的是为目标增建功能,因此,在Decorator类中包含了一个指向被装饰组建的对象,在装饰者Decorator的getName方法中返回了一个带有装饰效果的String对象,原来的返回结果可能是一个没有包含任何修饰符号,而经过装饰之后...