Модель предметної області
Ця стаття має кілька недоліків. Будь ласка, допоможіть удосконалити її або обговоріть ці проблеми на сторінці обговорення.
|
Модель предметної області (англ. 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;
...
}
Джерела[ред. | ред. код]
- Domain model [Архівовано 31 жовтня 2020 у Wayback Machine.]
|