0

各製品には、割引、マーチャントごとのディスカウント、マーチャントごとのボーナス、月間ディスカウントなどのコスト計算ツールが関連付けられています。将来的には、さらに多くのコスト計算ツールが追加される予定です。

具体的な製品クラスと、各コスト計算用の多くのデコレーターがあります。電卓は、商品のマーチャント ID、カテゴリ ID、色などの商品のプロパティによって計算を適用することを決定するため、すべての商品ですべての電卓を使用する必要があります。

そして、私たちのシステムには計算が必要な何百万もの製品があります。したがって、装飾された電卓をキャッシュする方が適切です。実行時に各製品エンティティを装飾するとコストがかかるためです。しかし、これはデコレータ パターンでは困難です。私たちの状況でこのパターンを使用するのは匂いのようです。

何を指示してるんですか?デコレーター、戦略、または責任連鎖パターンを使用する必要がありますか? またはノーパターン。

4

2 に答える 2

3

戦略パターンでは、オブジェクトの意図が変わります。

したがって、戦略は良い選択になると思います。

于 2009-06-01T09:38:32.397 に答える
0

電卓は、商品のマーチャント ID、カテゴリ ID、色などの商品のプロパティによって計算を適用することを決定するため、すべての商品ですべての電卓を使用する必要があります。

すべての製品ですべてのデコレーターを使用する必要がある場合、パターンから実際に利益を得ることはありません。これは、新しいデコレーターを実装する場合、その新しいデコレーターを使用するためにすべての既存のエンティティを更新する必要があるということですか?

デコレータは必要な場合にのみ製品に適用し、必要なデコレータのみを適用する必要があります。

デコレーター内から決定を削除する必要があると思います。デコレータを適用するかどうかを別の何かが決定する必要があります。その場合、適切なデコレータで製品をラップします。このようにして、製品がデコレーターでラップされている場合、そのデコレーターが製品に影響を与えている (効果がある?) ことがわかります。

于 2009-06-01T09:44:56.050 に答える