作用:向已有类中添加新的代码。新代码的目的是装饰原有类的核心职责或主要行为。简单来说,就是西施(SuperClass/Class)跑到现代,装扮自己(SuperDecorator),穿上现代的衣服(Dicorator1),并且画上妆(Decorator2),本来就很漂亮,化上妆更漂亮,这就是装饰模式。
实际上:javaSE中的IO流就是使用装饰模式
(BufferedInputStream bis = new BufferedInputStream(new FileInputStream());)
class SuperDecorator{
protected SuperClass sc;
public Decorator(SuperClass sc){
this.sc = sc;
}
@override
public void test(){
if(sc != null){
sc.test();
}
}
}
class Decorator1 {
public void test(){
//do something...
super.test();
//do something...
}
}
好处:把有效的核心功能和可有可无的装饰品区分开来。