装饰者设计模式与静态代理设计模式的对比

Posted

tags:

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

相同点:

(1) 装饰者类与代理类都需要实现目标类所实现的接口

(2) 装饰者类与代理类中都需要声明目标类对象,目的是这些类中都需要调用目标对象的目标方法

(3) 装饰者类与代理类都可以在不改变目标类的前提下对目标对象进行增强

不同点:

(1) 目的不同:装饰者类的目的就是为了增强目标类;静态代理类的目的是为了保护和隐藏目标对象。

(2) 装饰者类与代理类中都需要声明目标类对象,但对于目标对象的创建方式不同。装饰者类是由带参构造器传入的;代理类中的目标对象,是在无参构造器中直接创建的。

(3) 测试类中,装饰者模式,需要先创建一个目标类对象,再将其通过带参构造器传给装饰者类;代理模式,测试类直接创建代理类对象,测试类根本就看不到业务接口的真正的实现类是谁。

(4) 装饰者类一般不具体增强目标类,而是由具体的装饰者子类进行的增强,并且可以形成“装饰者链”;静态代理类,则是具体的增强的实现,所有的增强功能,一般都是在静态代理类中完成的。

以上是关于装饰者设计模式与静态代理设计模式的对比的主要内容,如果未能解决你的问题,请参考以下文章

设计模式----结构型模式之代理模式和装饰者模式的区别

静态代理和装饰者模式的区别

代理模式、装饰者模式

用过滤器和装饰者设计模式(静态代理)解决getParameter乱码问题

小白自我提高学习设计模式笔记—装饰者模式

设计模式之装饰者模式