public class Person {
private String name;
public Person() {
}
public Person(String name) {
this.name = name;
}
public void show() {
System.out.println("My name is" + name);
}
}
publicclass Finery extends Person{
protected Person component;
public void decorate(Person component) {
this.component = component;
}
@Override
public void show() {
if (component != null) {
component.show();
}
}
}
publicclass BigPants extends Finery {
@Override
public void show() {
super.show();
System.out.println("Wearing bigpants...");
}
}
publicclass Slippers extends Finery {
@Override
public void show() {
super.show();
System.out.println("Wearing a pairof slippers...");
}
}
publicclass TShirt extends Finery {
@Override
public void show() {
super.show();
System.out.println("Wearing a TShirt...");
}
}
/**
* Implement a "wearing clothes"function using Decorator pattern.
* User: Ben
* Date: 12-2-26
* Time: 下午8:43
*/
publicclass DecoratorClient {
public static void main (String[] args) {
Person person = newPerson("Ben");
BigPants bigPants = new BigPants();
Slippers slippers = new Slippers();
TShirt tShirt = new TShirt();
bigPants.decorate(person);
slippers.decorate(bigPants);
tShirt.decorate(slippers);
tShirt.show();
}
}