设计模式之装饰模式

装饰模式


动态的给一个对象增加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活

person类:

package com.hml.decorator;

public class Person {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void show() {

    }
}

衣服类

package com.hml.decorator;

public class Finery extends Person {

    protected Person component;

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

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

}

T袖类

package com.hml.decorator;

public class TShirts extends Finery {

    public void show() {
        System.out.println("T袖");
    }

}

大裤衩类:

package com.hml.decorator;

public class BigTrouser extends Finery {

    public void show() {
        System.out.println("大裤衩");
    }

}

接下来,我们就可以创建一个对象,然后用T袖装饰,在用大裤衩装饰。

类图:

装饰模式的特点


装饰模式是为已有功能动态的添加更多的功能的一种方式,把类中的装饰功能从类中搬移去除,这样可以简化原有的类。

原文地址:https://www.cnblogs.com/heml/p/4620509.html