代理模式在执行一些额外处理之后将请求委托给Real主题,例如,如果需要处理请求,则应用检查可能是某些凭据检查。
它有如下的类图
代理类具有对具体主题的直接引用。
Decorator Pattern丰富了组件的行为[就像代理它还做了一些额外的处理并将操作委托给真实组件]。此模式的类图类似于代理模式,唯一不同的是它具有对组件接口的引用。
在Proxy类中具有具体的实际主题使得单元测试变得困难,因为类应该仅依赖于接口而不是实现。我的问题是,如果代理模式也有对Real主题公开的接口的引用,那么它将等同于Decorator模式。在这种情况下,代理模式的类图也将如下所示
答案 0 :(得分:4)
关于意图的全部内容。在功能上,它们是等价的,但装饰者的意思是动态地向对象添加功能,而代理只是控制对目标对象的访问而不向其添加任何附加功能。
因此,代理的客户端需要与真实对象相同的结果,而装饰器的客户端将其留给装饰器,以便在将调用委托给目标之前和/或之后执行任何其他逻辑。
所以,从概念上讲,在你的例子中,你似乎还在处理代理。
答案 1 :(得分:1)
是。如果您查看结构,装饰器和代理都是相同的。只有意图是不同的。
<强> 装饰: 强>
e.g。 (带链接): java.io 与InputStream
&amp;相关的包类OutputStream
接口
FileOutputStream fos1 = new FileOutputStream("data1.txt");
ObjectOutputStream out1 = new ObjectOutputStream(fos1);
后果
<强> 代理: 强>
例如: java.rmi 包类
关键要点:
有用的链接:
来自wikiepdia的 来自sourcemaking的 来自oodesign的 来自维基百科的 来自sourcemaking的 来自oodesign的