Модель предметної області

Модель предметної області (англ. Domain model) — шаблон проєктування, який пропонує реалізувати бізнес-логіку, використовуючи підхід ООП.

Призначення[ред. | ред. код]

У випадку, коли бізнес-логіка містить складні правила, її найкраще описати у вигляді підходу ООП, використовуючи Rich модель. Таким чином, сутності предметної області моделюються у вигляді об'єктів.

Сутності можуть використовувати простий підхід, коли зв'язки між ними відповідають способу їх збереження (наприклад, у базі даних, коли одна сутність відповідає одній таблиці), або складний підхід, коли повністю ігнорується спосіб їх збереження, а до уваги береться саме модель предметної області. Таким чином, об'єкти містять логіку, доступ до даних обмежений відповідним модифікатором доступу, між об'єктами присутні зв'язки наслідування, а також існують класи, що описують логіку та не зберігаються у сховищі.

Перший підхід забезпечує легкий спосіб збереження даних, та він не такий гнучкий для зміни бізнес-логіки. На противагу йому, складний підхід легко дозволяє змінювати логіку, та виникають складності при збереженні чи завантаженні класів із пам'яті.

Реалізація[ред. | ред. код]

Нехай дано декілька типів знижок, які можна застосовувати на продукти. Тоді таку предметну область можна описати наступним чином.

interface IDiscount {     void apply(Product product); } class ChristmasDiscount : IDiscount {    public void apply(Product product)   {      ...   } } ... class Product {     private double _price;     public Price => _price;     ... } 

Джерела[ред. | ред. код]