java 之 装饰模式(大话设计模式)

如果说继承实体是为了扩展实体的属性,以我的角度理解装饰模式就是为了扩展父类的方法!可能是笔者理解的不够深刻,感觉和代理模式有些相近!

大话设计模式-类图

大话设计模式中demo不是java代码,这里我翻译成java代码。

/**
 *  Component 和 ConcreteCmponent
 */
public class Person {

    private String name;

    public Person() {}

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

    public void show() {

    }
}
/**
 * Decorator
 */
public class Finery extends Person {

    private Person person;

    public void setPerson(Person person) {
        this.person = person;
    }

    @Override
    public void show() {
        if (null != person) {
            person.show();
        }
    }
}
/**
 * 具体装饰对象
 */
public class TShirts extends Finery {

    @Override
    public void show() {
        super.show();
        System.out.print("T恤   ");
    }
}
/**
 * 具体装饰对象
 */
public class BigTrouser extends Finery {

    @Override
    public void show() {
        System.out.println("垮裤   ");
        super.show();
    }
}
/**
 * 客户端
 */
public class Test {

    public static void main(String[] args) {

        Person person = new Person("小菜");
        TShirts ts = new TShirts();
        BigTrouser big = new BigTrouser();
        ts.setPerson(person);
        big.setPerson(ts);
        big.show();
    }
}

如果理解的有偏差!可以留言给笔者!

以上,希望能帮助学习的童鞋理解装饰模式!

原文地址:https://www.cnblogs.com/zhuxiansheng/p/7885382.html