一、定义
动态的给一个对象增加额外的职责。
二、特点
结构型模式,作为现有类的一个包装。在不想增加很多子类的情况下拓展类。允许向一个现有的对象添加新的功能,同时又不改变其结构。
三、示例代码:
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();
}
}