2016-10-11 9 views
0

ここでは、Flyweightパターン構造図である。ここではFlyweightパターン:UnsharedConcreteFlyweight

enter image description here

あなたはGoFのは説明UnsharedConcreteFlyweightを参照してください。

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

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

良いデザインですか?使用しない引数を取るには、使用する場合はデータの重複があります。これはLiskov Substitution Principle違反でもありますか?

+0

私はすべてのユースケースのすべてのSOLID原則に適合するパターンを見つけることはほとんどありません。ではない?ここでは「利便性」が重要な役割を果たしています。私たちが厳しい仕事をしっかりと守って厳しい仕事をしても、それに続く幸福ではなく、ほとんどすべてを達成すれば、間違いなく意味をなさない。 :)) –

答えて

0

まだ良いです! Liskov Substitution Principle(LSP)はすべて約で、デザインは契約です。 UnsharedConcreteFlyweight.OperationFlyweight.Operationの契約を満たしている限り、問題はありません!

入力パラメータ(この場合は外部状態)を無視するのは、LSP違反の兆候であり、必ずしもそうではありません。