我看了《大话设计模式》中的装饰者模式章节,就用代码实现一下,记录下来。
1、先上UML类图
2、代码实操
2.1 定义要被装饰的抽象组件和具体的组件对象,分别是Person和SimplePerson
public abstract class Person {
protected String name;
public Person() {
}
public Person(String name) {
this.name = name;
}
public abstract void show();
}
public class SimplePerson extends Person{
public SimplePerson(String name) {
super(name);
}
@Override
public void show() {
System.out.println("打扮的"+super.name);
}
}
2.2 定义抽象装饰类和具体的装饰子类,分别为Finery、Tie、BigTrouser、TShirts。
//衣服
public class Finery extends Person{
private Person person;
public Finery(Person person){
this.person=person;
}
@Override
public void show() {
person.show();
}
}
public class Tie extends Finery{
public Tie(Person person) {
super(person);
}
@Override
public void show() {
super.show();
System.out.println("打领带");
}
}
public class TShirts extends Finery{
public TShirts(Person person) {
super(person);
}
@Override
public void show() {
super.show();
System.out.println("T恤衫");
}
}
public class BigTrouser extends Finery{
public BigTrouser(Person person) {
super(person);
}
@Override
public void show() {
super.show();
System.out.println("穿垮裤");
}
}
2.3 测试类
public class Client {
public static void main(String[] args) {
Person person = new SimplePerson("小明");
Tie tie = new Tie(person);
TShirts tShirts = new TShirts(tie);
BigTrouser bigTrouser = new BigTrouser(tShirts);
bigTrouser.show();
}
}
2.4 运行结果