装饰器模式是一种结构型模式。
举个例子,比如说我们现在有一些没有皮肤的英雄,我们可以给这些英雄加点服饰,比如说戴个帽子,穿双鞋子等
简单来讲就是采用聚合方式,装饰器中聚合Hero,执行hero的方法的同时进行添加所需的装饰。
示例代码:
public abstract class Hero {
public abstract void showSkin();
}
public abstract class HeroDecorator extends Hero {
public Hero hero;
public HeroDecorator(Hero hero) {
this.hero = hero;
}
}
public class HatDecorator extends HeroDecorator {
public HatDecorator(Hero hero) {
super(hero);
}
@Override
public void showSkin() {
super.hero.showSkin();
System.out.println("戴帽子");
}
}
public class ShoesDecorator extends HeroDecorator {
public ShoesDecorator(Hero hero) {
super(hero);
}
@Override
public void showSkin() {
super.hero.showSkin();
System.out.println("穿鞋子");
}
}
public class FuWang extends Hero {
@Override
public void showSkin() {
System.out.println("展示斧王装饰");
}
}
public class Main {
public static void main(String[] args) {
FuWang fw = new FuWang();
HatDecorator hatDecorator = new HatDecorator(fw);
ShoesDecorator sd = new ShoesDecorator(hatDecorator);
sd.showSkin();
}
}