我打算使用装饰器模式,我想知道属性复制...我的意思是,如果基类(被装饰的那个)有很多状态(属性、属性或其他),当你使用装饰器模式时,你总是会得到那个状态的两个副本,对吧?(装饰类中的那个和装饰类中的那个)总是这样吗?
Here问了一个类似的问题,但回答并没有让我更清楚。
同样在"Head First: Design pattern“一书中,他们没有提到这种模式的缺点。
干杯!!
发布于 2014-08-22 17:47:20
对我来说,装饰器不需要存储状态,例如:如果类A有一个方法getTotal(),那么DecoratorA::getTotal()可能会返回2*A::getTotal()。
装饰器可以根据它装饰的对象延迟返回数据。它可能有一些属性(就像我示例中的2 ),但它基本上是经过一些预处理/后处理的委托。
如果成本太高(比如一些缓存),您最终会存储它,但我想知道,如果每个属性都需要存储,那么这样的装饰器有什么用。返回装饰对象的新实例会更快,其属性是基于某种计算的。
https://stackoverflow.com/questions/25443803
复制相似问题