
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();
}
}
本文介绍了一个使用Java实现的装饰者模式示例,通过为Person类动态地添加不同的服饰(如大裤衩、拖鞋和T恤),展示了装饰者模式如何在不改变原有对象的情况下为其增加新的职责。
1394

被折叠的 条评论
为什么被折叠?



