动态地给一个对象添加一些额外的职责。就增长功能来讲, Decorator模式相比生成子类更为灵活。该模式以对客 户端透明的方式扩展对象的功能。html
//component public interface Person { void eat(); } // public class Man implements Person { public void eat() { System.out.println("男人在吃"); } } // public abstract class Decorator implements Person { protected Person person; public void setPerson(Person person) { this.person = person; } public void eat() { person.eat(); } } // public class ManDecoratorA extends Decorator { public void eat() { super.eat(); reEat(); System.out.println("ManDecoratorA类"); } public void reEat() { System.out.println("再吃一顿饭"); } } public class ManDecoratorB extends Decorator { public void eat() { super.eat(); System.out.println("==============="); System.out.println("ManDecoratorB类"); } } public static void main(String[] args) { Man man = new Man(); ManDecoratorA a = new ManDecoratorA(); ManDecoratorB b = new ManDecoratorB(); a.setPerson(man); b.setPerson(man); a.eat(); b.eat(); }
参考文档java