Мне нужен совет, как смоделировать этот простой пример категоризации (?):
У меня есть продукт. Продукт может быть разных типов, например ProductType 1, ProductType 2 и ProductType 3. Все продукты имеют номер детали и имя. Где они отличаются, так рассчитываются их цены.
- Продукты по цене типа 1 зависят от количества продукта. Так что, если у меня есть 5 продуктов, цена составляет $ х. Если у меня 20 товаров, цена будет $ у, и так далее.
- Продукты по цене типа 2 зависят от веса каждого продукта. Если вес 5 кг, цена будет $ х, и так далее.
- Продукты типа 3 имеют простую цену, например, $ x за каждый продукт.
На мой взгляд, каждая «структура цен» должна иметь отдельную таблицу / класс. Продукт будет иметь ссылку на свою структуру цен, в зависимости от типа продукта. Вы бы просто создали таблицу «тип продукта» и имели бы атрибут с именем «Тип» в классе «Продукт», или вы бы использовали обобщение, поэтому продукт 1/2/3 является подтипом «продукта»?
Будет примерно 5 различных ценовых структур, и способ расчета цены отличается от каждого типа. Таким образом, логика расчета общей цены заказа зависит от каждого типа продукта.
Можете ли вы дать мне несколько советов о том, как смоделировать это наилучшим образом? Если я выберу подход, при котором в классе Product есть атрибут Type, я представлю, что в моем коде будет много операторов if-else. Если я выберу их подкласс, каждый класс может нести ответственность за расчет правильной цены или за то, что от него требуется.