この単純な分類 (?) の例をモデル化する方法についてアドバイスが必要です:
私は製品を持っています。製品は、ProductType 1、ProductType 2、ProductType 3 などのさまざまなタイプにすることができます。すべての製品には部品番号と名前があります。それらが異なるのは、価格の計算方法です。
- タイプ 1 の製品の価格は、製品の数によって異なります。したがって、5 つの製品がある場合、価格は $x です。20 個の製品がある場合、価格は $y などになります。
- タイプ 2 の製品の価格は、各製品の重量によって異なります。重量が 5 kg の場合、価格は $x などになります。
- タイプ 3 の製品には、各製品の $x のような単純な価格があります。
私の見方では、各「価格構造」には専用のテーブル/クラスが必要です。製品は、製品のタイプに応じて、その価格構造への参照を持ちます。「製品タイプ」テーブルを作成して、製品クラスにタイプという属性を持たせますか?それとも、一般化を使用して、製品 1/2/3 が製品のサブタイプになるようにしますか? 5 種類の料金体系があり、料金の計算方法はタイプごとに異なります。したがって、注文の合計金額を計算するロジックは、各商品タイプに依存します。
これを最良の方法でモデル化する方法についてアドバイスをいただけますか? Product クラスに Type 属性があるアプローチを選択すると、コード内に多数の if-else ステートメントが作成されると思います。それらをサブクラス化することを選択した場合、各クラスは正しい価格を計算するか、または要求されたことは何でも責任を負うことができます。