装饰器模式

牧云@^-^@ 提交于 2019-12-06 00:13:14

一、定义

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

二、特点

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

三、示例代码:

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();
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!