装饰器模式中的重复属性

时间:2014-08-22 09:31:11

标签: design-patterns decorator

我打算使用装饰器模式,我想知道属性重复...我的意思是,如果基类(正在装饰的那个)有很多状态(属性,属性或其他),当你使用装饰器模式时,你最终会得到该状态的两个副本,对吧? (装饰课程中的那个,装饰课程中的那个)是这样的吗?

Here类似的问题是"有点"问道,但回复并没有让我更清楚。

同样在书" Head First:Design Patterns"中,他们没有提到任何类似这种模式的缺点。

干杯!!

1 个答案:

答案 0 :(得分:0)

对我来说,装饰者不需要存储状态,例如:如果类A有方法getTotal(),那么DecoratorA::getTotal()可能会返回2*A::getTotal()

装饰器可以根据它装饰的对象懒洋洋地返回数据。它可能有一些属性(比如我的示例中的2),但它基本上是委托进行一些前/后处理。

如果成本太高(如某些缓存),你最终会存储它,但我想知道如果需要存储每个属性,这种装饰器的用途。返回装饰对象的新实例会更快,其中属性基于一些计算。