概述
装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实,Decorator 模式相比生成子类更为灵活
适用性
在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责处理那些可以撤消的职责当不能采用生成子类的方法进行扩充时
案例
public interface Sourceable {
public void method();
}
public class Source implements Sourceable {
@Override
public void method() {
System
.out
.println("the original method!");
}
}
public class Decorator implements Sourceable {
private Sourceable source
;
public Decorator(Sourceable source
){
super();
this.source
= source
;
}
@Override
public void method() {
System
.out
.println("before decorator!");
source
.method();
system
.out
.println("after decorator!");
}
}
public class DecoratorTest {
public static void main(String
[] args
) {
Sourceable source
= new Source();
Sourceable obj
= new Decorator(source
);
obj
.method();
}
}