動態地給一個對象添加一些額外的職責。就增長功能來講, 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