装饰器模式

文章内容输出来源:拉勾教育Java就业集训营;
 
一、概念 
装饰器模式,就是给一个对象动态的增加一些新功能,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。
 
二、类图 
 
三、代码实现
public interface Sourceable {
    // 自定义抽象方法
    void method();
}
public class Source implements Sourceable {
    @Override
    public void method() {
        System.out.println("素颜美可以如此之美!");
    }
}
无装饰类的测试
public class SourceableTest {

    public static void main(String[] args) {

        Sourceable sourceable = new Source();
        sourceable.method();
    }
}

 

加上装饰类

public class Decorator implements Sourceable {
    private Sourceable source;

    public Decorator(Sourceable source) {
        this.source = source;
    }

    @Override
    public void method() {
        source.method(); // 保证原有功能不变
        System.out.println("化妆之后你会更美!");
    }
}

有装饰类的测试

public class SourceableTest {

    public static void main(String[] args) {

        Sourceable sourceable = new Source();
        sourceable.method();
        
        System.out.println("---------------------------------------------------");
        // 接下来使用装饰类实现功能
        Sourceable sourceable1 = new Decorator(sourceable);
        sourceable1.method();
    }
}

 打印

 四、实际意义

可以实现一个类功能的扩展。
可以动态的增加功能,而且还能动态撤销(继承不行)。
缺点:产生过多相似的对象,不易排错。
 

posted @ 2020-09-27 23:44  格子衫111  阅读(98)  评论(0)    收藏  举报