各製品には、ディスカウント、マーチャントによる割引、マーチャントによるボーナス、月間割引などの関連コスト計算機能があります。将来は、より多くのコスト計算が追加されます。コストデコレータ
具体的な製品クラスと、各コスト計算のための多くのデコレータがあります。すべての商品は、計算機が商品の販売者ID、カテゴリID、色などの商品のプロパティで計算を行うため、すべての計算機を使用する必要があります。
さらに、Googleのシステムには数百万の製品が必要です計算される。したがって、装飾された電卓をよりよくキャッシュします。なぜなら、実行時に各製品エンティティを飾るのは高価なためです。しかし、これはデコレータパターンでは難しいです。私たちの状況でこのパターンを使用するのは匂いのようです。
あなたはどう思いますか?デコレータ、戦略、責任連鎖のパターンを使用すべきでしょうか?またはパターンなし。
デコレータは製品のプロパティに基づいて計算を行い、製品のリストをループしてこれらの計算をすべての製品に適用します。したがって、各繰り返しでこれらの製品をそれぞれ装飾することで、計算ロジックのキャッシュが良いアイデアだと考えました。しかし、これはデコレータを使うのは難しいです。だから、よりよいアプローチは、戦略パターンをセット/ゲット・プロダクトとして使用することです。 プロダクトp = new Product(); p.setCalculationStrategy(listOfCalculators); p.price(); //すべての計算機を呼び出し、関心のある計算機だけが計算する –
p.price(){ return listOfCalculators.price(); } listOfCalculators.price(){ それぞれ算出{ // ...}行う 戻り価格を、 } –