gpt4 book ai didi

oop - 代理模式和装饰者模式的区别

转载 作者:行者123 更新时间:2023-12-03 04:43:18 25 4
gpt4 key购买 nike

你能给出任何好的解释ProxyDecorator之间的区别吗?

我看到的主要区别是,当我们假设Proxy使用组合并且Decorator使用聚合时,那么似乎很清楚,通过使用多个(一个或多个)装饰器,您可以修改/添加功能到预先存在的实例(装饰),而代理有自己的内部实例代理类及其委托(delegate)添加一些附加功能(代理行为)。

问题是 - 通过聚合创建的Proxy仍然是Proxy还是Decorator?是否允许(根据 GoF 模式中的定义)通过聚合创建代理

最佳答案

真正的区别不是所有权(组合与聚合),而是类型信息。

装饰器总是传递它的委托(delegate)者。 代理可能自己创建它,或者他可能将其注入(inject)。

但是代理总是知道受委托(delegate)者的(更)特定类型。换句话说,代理及其委托(delegate)者将具有相同的基本类型,但代理指向某种派生类型。 装饰器指向它自己的基本类型。因此,区别在于有关受委托(delegate)者类型的编译时信息。

在动态语言中,如果委托(delegate)者被注入(inject)并且恰好具有相同的接口(interface),那么没有区别。

您问题的答案是"is"。

关于oop - 代理模式和装饰者模式的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18618779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com