大话设计模式-----装饰模式

1、思想

动态的给对象添加一些额外的职责。例如为一个人穿T恤、球鞋等,人是对象,每个服饰便是一种职责,一层一层的为人添加服饰。

2、代码结构图

大话设计模式-----装饰模式

3、代码

package 测试;
class Person {
    private String name;

    public Person(String name) {
        this.name = name;

    }

    public Person() {

    }

    public void show() {
        System.out.println("装扮的" + name);
    }
}

// 服饰类
class Finery extends Person {
    public Person component;

    public void decorate(Person component) {
        this.component = component;
    }

    public void show() {
        if (component != null) {
            component.show();
        }
    }
}

// T恤类
class TShrits extends Finery {
    public void show() {
        System.out.println("T恤");
        super.show();

    }
}

// 裤子类
class Trouser extends Finery {
    public void show() {
        System.out.println("裤子");
        super.show();

    }
}

public class Main2 {
    public static void main(String[] args) {
        Person person = new Person("小菜");
        TShrits ts = new TShrits();
        Trouser tr = new Trouser();
        ts.decorate(person);
        tr.decorate(ts);
        tr.show();

    }

}

 

运行结果:

裤子
T恤
装扮的小菜