【发布时间】:2016-10-12 16:27:43
【问题描述】:
下面是享元模式结构图:
在这里您可以看到 GoF 解释的 UnsharedConcreteFlyweight:
UnsharedConcreteFlyweight : 并非所有享元子类都需要共享。蝇量级 界面启用共享;它不强制执行它。这很常见 UnsharedConcreteFlyweight 对象将 ConcreteFlyweight 对象作为 享元对象结构中某个级别的子级(如 Row 和 Column 类有)。
据我所知,Operation 将 in extrinsicState 作为参数,但它根本不会使用它,因为它有 allState 作为成员数据。
这是一个好的设计吗?采用您不使用的参数,如果您将使用,那么您将有数据重复。这甚至可能违反了里氏替换原则?
【问题讨论】:
-
我怀疑,你很少能找到一个在所有用例中都符合所有 SOLID 原则的模式。不是吗? “方便”在这里起着关键作用。如果我们硬着头皮去遵循一个原则,付出巨大的努力,却只获得几乎一无所获,而不是仅仅遵循它的快乐,那绝对是没有意义的。 :))
标签: design-patterns liskov-substitution-principle flyweight-pattern