Ми намагаємось перенести дані з нашого розширеного сервісного рівня в наш доменний рівень, використовуючи підхід DDD. Наразі у наших послугах є велика ділова логіка, яка розповсюджується всюди і не отримує користі від успадкування.
У нас є центральний клас доменів, який є основною частиною нашої роботи - торгівля. Об'єкт Торгівлі буде знати, як собі цінувати, як оцінювати ризик, перевіряти себе тощо. Потім ми можемо замінити умови на поліморфізм. Напр .: SimpleTrade буде собі ціну в одну сторону, але ComplexTrade буде собі ціну іншим.
Однак ми стурбовані тим, що це пошкодить клас (и) торгівлі. Він дійсно повинен відповідати за власну обробку, але розмір класу збільшиться експоненціально, оскільки додаватимуться більше функцій.
Тож у нас є вибір:
- Помістіть логіку обробки в торговий клас. Логіка обробки тепер поліморфна на основі типу торгівлі, але тепер у класу Trade є багато відповідальних (ціноутворення, ризик тощо) і є великим
- Покладіть логіку обробки в інший клас, наприклад TradePricingService. Більше не поліморфно з деревом спадкування Trade, але класи менші та простіші для перевірки.
Який би був запропонований підхід?