Сущность в Domain Driven Design — это сердце бизнес-логики. Ее цель - моделирование бизнес-процессов и их жизненного цикла. Сущность инкапсулирует состояние и поведение важное для бизнеса. Очень часто в DDD поведение сущности, доступные операции и бизнес-правила начинают определяться через состояние самого объекта. При использовании традиционной "плоской" структуры методы изменения состояния объекта начинают содержать множество условных операторов (if-else, switch). Проверки состояния объекта дублируются в каждом методе. Также со временем сущность превращается в God-object - огромные классы, внутри которых находится вся логика поведения. Выход: использование паттерна State для управления поведением сущности! State позволяет "извлечь" состояние сущности в отдельные классы, каждый из которых инкапсулирует своё поведение и валидные переходы. Результат? Читаемый, безопасный и легко тестируемый код доменной модели. ⮞ Ясность бизнес-логики - убираем нарушение принципа Single Responsibility.