Что такое Доменный объект и Предметная область, простым языком?
Начал изучать ООП и часто встречаю упоминание о Доменный объект и Предметная область. Особенно часто вижу их в контексте Репозитория. Поскольку к полному погружению в книги Эванса и Вернона еще не готов. Было прочитано множество статей и выборочно главы из данных книг. К сожалению, не совсем понял, даже поверхностно, что они из себя представляют. Я опишу как понимаю данные понятия, Вас попрошу исправить меня или дополнить.
Предметная область - представляет часть реального мира, которая должна быть реализована в нашей системе. Пример:
- Блог - создание и публикация
- Отдел кадров - учет сотрудников
- Аукцион - продажа товаров
- Блог:
- Запись/Пост
- Читатель/Пользователь
- Комментарий
- Отдел кадров:
- Сотрудник
- Подразделение
- Аукцион:
- Товар
- Покупатель/Пользователь
class Account
{
private Id $id;
private Balance $balance;
private Status $status;
private array $clients;
}
Доменный объект должен содержать всю бизнес-логику для работы с данным объектом.
class Account
{
private Id $id;
private Balance $balance;
private Status $status;
private array $clients;
public function addClient(int $id);
public function removeClient(int $id);
public function rechargeBalance(int $amount);
}
Так же интересует, что означает "Уровень объектов предметной области" и "Уровень модели предметной области". О которых говорится в Вики