Мы пытаемся переместить данные из нашего раздутого уровня Service в наш уровень Domain, используя подход DDD. В настоящее время в наших сервисах много бизнес-логики, которая распространена повсеместно и не получает наследства.
У нас есть центральный класс Domain, который находится в центре большинства нашей работы - Trade. Объект Trade будет знать, как оценивать себя, как оценивать риск, подтверждать себя и т. Д. Затем мы можем заменить условные выражения полиморфизмом. Например: SimpleTrade будет оценивать себя в одну сторону, а ComplexTrade - в другую.
Тем не менее, мы обеспокоены тем, что это приведет к раздуванию торговых классов. Он действительно должен отвечать за собственную обработку, но размер класса будет увеличиваться в геометрической прогрессии по мере добавления новых функций.
Итак, у нас есть выбор:
- Поместите логику обработки в класс Trade. Логика обработки теперь полиморфна в зависимости от типа сделки, но класс Trade теперь имеет несколько функций ответственности (ценообразование, риск и т. Д.) И является большим
- Поместите логику обработки в другой класс, такой как TradePricingService. Больше не полиморфен с деревом наследования Trade, но классы меньше и их проще тестировать.
Какой будет предложенный подход?