一、定义
动态的给一个对象增加额外的职责。
二、特点
结构型模式,作为现有类的一个包装。在不想增加很多子类的情况下拓展类。允许向一个现有的对象添加新的功能,同时又不改变其结构。
三、示例代码:
public class Person { String name; public Person() { } public Person(String name) { this.name = name; } public void show() { System.out.println(name); } }
public class Finery extends Person { protected Person commponet; public void decorate(Person commponet) { this.commponet = commponet; } public void show() { if (commponet != null) { commponet.show(); } } }
public class Tshirt extends Finery { @Override public void show() { System.out.println("T恤衫"); super.show(); } }
public class Suit extends Finery { @Override public void show() { System.out.println("西装"); super.show(); } }
public class Client { public static void main(String[] args) { Person person = new Person("小a"); Finery tshirt = new Tshirt(); Finery suit = new Suit(); tshirt.decorate(person); suit.decorate(tshirt); suit.show(); } }