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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Модель предметної області (англ. 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;
    ...
}

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