Flyweight模式:UnsharedConcreteFlyweight

时间:2016-10-11 13:05:50

标签: design-patterns liskov-substitution-principle flyweight-pattern

这是flyweight模式结构图:

enter image description here

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

  

UnsharedConcreteFlyweight:   并非所有Flyweight子类都需要共享。 Flyweight   界面实现共享;它没有强制执行。这很常见   UnsharedConcreteFlyweight对象将ConcreteFlyweight对象作为   flyweight对象结构中某些级别的子节点(如Row   和列类有。)

尽管我理解Operationin extrinsicState作为参数,但它根本不会使用它,只要它有allState作为成员数据。

这是一个好的设计吗?要接受你不使用的参数,如果你将使用,那么你将有数据重复。这甚至可能是Liskov Substitution Principle违规?

1 个答案:

答案 0 :(得分:0)

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

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