装饰器模式不改变其结构的情况下,添加现有对象新的功能,属于结构型模式,也就是现有的类的一个包装。装饰器模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供额外的功能。
新建Skins接口
public interface Skins {
void reload();
}
新建实现Skins接口的实体类Galen
public class Galen implements Skins {
public void reload() {
System.out.println("盖伦:人在塔在!");
}
}
新建实现了 Skins 接口的抽象装饰类GalenSkins
public abstract class GalenSkins implements Skins {
Skins skins;
public GalenSkins(Skins skins) {
this.skins = skins;
}
public void reload() {
skins.reload();
}
}
新建扩展了 GalenSkins类的实体装饰类GalenZhangLiaoWenYuan
public class GalenZhangLiaoWenYuan extends GalenSkins {
public GalenZhangLiaoWenYuan(Skins skins) {
super(skins);
}
@Override
public void reload() {
skins.reload();
setSpringWaterSlogan(skins);
}
//在开局的泉水时喊口号
private void setSpringWaterSlogan(Skins skins) {
System.out.println("让你们见识一下,张辽文远的力量!");
}
}
public class Test {
public static void main(String[] args) {
GalenSkins galen = new GalenZhangLiaoWenYuan(new Galen());
galen.reload();
}
}
结果