0

下面是享元模式结构图:

在此处输入图像描述

在这里,您可以看到 GoF 解释的 UnsharedConcreteFlyweight:

UnsharedConcreteFlyweight :并非所有 Flyweight 子类都需要共享。享元界面可实现共享;它不强制执行它。UnsharedConcreteFlyweight 对象通常在享元对象结构中的某个级别将 ConcreteFlyweight 对象作为子对象(如 Row 和 Column 类所具有的)。

据我所知,这里Operation需要in extrinsicState作为参数,但就allState成员数据而言,它根本不会使用它。

这是一个好的设计吗?采用您不使用的参数,如果您将使用,那么您将有数据重复。这甚至可能违反了里氏替换原则?

4

1 回答 1

0

还是不错的!Liskov 替换原则 (LSP) 是关于按合同设计的。只要UnsharedConcreteFlyweight.Operation满足合同Flyweight.Operation,没问题!

忽略输入参数(在这种情况下为外部状态)只是 LSP 违规的指示,并非总是如此。

于 2016-10-12T08:27:43.730 回答