装饰器模式

一、定义

动态的给一个对象增加额外的职责。

二、特点

结构型模式,作为现有类的一个包装。在不想增加很多子类的情况下拓展类。允许向一个现有的对象添加新的功能,同时又不改变其结构。

三、示例代码:

public class Person {
    String name;

    public Person() {

    }

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

    public void show() {
        System.out.println(name);
    }

}

public class Finery extends Person {
    protected Person commponet;

    public void decorate(Person commponet) {
        this.commponet = commponet;
    }
    
    public void show() {
        if (commponet != null) {
            commponet.show();
    
        }
    }    
}
public class Tshirt extends Finery {

    @Override
    public void show() {
        System.out.println("T恤衫");
        super.show();
    }
}

public class Suit extends Finery {
    @Override
    public void show() {
        System.out.println("西装");
        super.show();
    }
}

public class Client {
    public static void main(String[] args) {

        Person person = new Person("小a");

        Finery tshirt = new Tshirt();
        Finery suit = new Suit();

        tshirt.decorate(person);
        suit.decorate(tshirt);
        suit.show();
    }
}

posted @ 2019-11-28 19:00  兮云飞扬  阅读(62)  评论(0编辑  收藏  举报