装饰模式

Posted xiaobo520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰模式相关的知识,希望对你有一定的参考价值。

  顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。

public interface Source {
    void method1();
}


public class A implements Source {
    @Override
    public void method1() {
        System.out.println("这是A对象的功能");
    }
}


public class B implements Source {
    @Override
    public void method1() {
        System.out.println("这是B对象的功能");
    }
}



public class Decorator implements Source {
    private Source sourse;

    public Decorator(Source sourse) {
        super();
        this.sourse = sourse;
    }

    @Override
    public void method1() {
        System.out.println("这是装饰类的方法");
        sourse.method1();
    }
}

  

因为装饰类的构造器里面有一个参数是Source接口,所以只要把传入的参数改变就可以实现动态的更改扩展的功能

 

下面是测试

public class Test {
    public static void main(String[] args) {
        Source a=new A();
        Source b=new B();
        Source decoratorA = new Decorator(a);
        decoratorA.method1();
        Source decoratorB=new Decorator(b);
        decoratorB.method1();
    }
}

  

技术图片

 

以上是关于装饰模式的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf 模板 - 有没有办法装饰模板而不是包含模板片段?

swift设计模式学习 - 装饰模式代码大全

设计模式---装饰者模式

设计模式之单例模式

装饰模式与代理模式的区别

Java设计模式之装饰者模式