Урок 7: Богатое моделирование предметной области
Когда вся бизнес-логика сидит в сервисах, а классы держат только данные с публичными геттерами и сеттерами, любая строка кода может нарушить правила: отрицательная сумма, заказ без позиций. В этом уроке мы переносим поведение на саму сущность, так что недопустимое состояние просто не может быть созд
Богатая модель предметной области — это как торговый автомат: вы не можете открыть дверцу и схватить банку — вы вставляете монету, и автомат выдаёт по своим собственным правилам.
- Богатая модель предметной области
- Бизнес-поведение и правила живут внутри самой сущности: приватные поля, при этом каждое изменение состояния проходит через метод, проверяющий правило.
- анемичная модель
- Классы только с данными и публичными геттерами/сеттерами, при этом вся логика сидит в сервисах — любой вызывающий может обойти правила и создать недопустимое состояние.
- инвариант
- Правило, которое должно всегда выполняться для объекта — например, сумма заказа никогда не бывает отрицательной. В богатой модели сущность обеспечивает его сама.