0

Flyweight パターンの構造図は次のとおりです。

ここに画像の説明を入力

ここに、GoF が説明する UnsharedConcreteFlyweight が表示されます。

UnsharedConcreteFlyweight : すべての Flyweight サブクラスを共有する必要はありません。Flyweight インターフェイスは共有を可能にします。それは強制しません。UnsharedConcreteFlyweight オブジェクトが、Flyweight オブジェクト構造のあるレベルで子として ConcreteFlyweight オブジェクトを持つことは一般的です (Row クラスと Column クラスのように)。

ここでは、私が理解している限り、引数としてOperation取りますが、メンバーデータとしてin extrinsicState持っている限り、まったく使用しません。allState

良いデザインですか?使用しない引数を取るには、使用する場合はデータが重複します。これは、リスコフの置換原則違反でさえありますか?

4

1 に答える 1

0

それはまだ良いです!Liskov Substitution Principle (LSP) は、Design By Contractに関するものです。UnsharedConcreteFlyweight.Operationが の契約を満たしている限り、Flyweight.Operation問題ありません。

入力パラメーター (この場合は外部状態) を無視することは、LSP 違反を示すだけであり、常にではありません。

于 2016-10-12T08:27:43.730 に答える