特点
装饰者模式也叫包装器模式,它允许向现有的对象新增功能,但是不改变现有对象的结构,主要作用于该对象的增强功能,属于结构型模式。
代码实现
装饰器中抽象类
public abstract class Animal {
public abstract void eat();
}
public class Monkey extends Animal{
@Override
public void eat(){
log.info("我会吃香蕉");
}
}
装饰器类(把猴类装饰成孙猴子)
public class SunMonkey extends Animal {
private Animal animal;
public SunMonkey(Animal animal) {
this.animal = animal;
}
private void afterEat(){
log.info("吃完以后我变了个寂寞.");
}
@Override
public void eat() {
animal.eat();
afterEat();
}
}
测试代码
@Test
public void testDecorator() {
Monkey monkey = new Monkey();
SunMonkey sunMonkey = new SunMonkey(monkey);
sunMonkey.eat();
}
10:02:34.693 [main] INFO org.example.decorator.Monkey - 我会吃香蕉
10:02:34.700 [main] INFO org.example.decorator.SunMonkey - 吃完以后我变了个寂寞.