intermediate
Entities
Моделируйте objects с identity и lifecycle, когда behavior должен сохранять invariants across state changes.
Entities — доменные объекты с идентичностью, сохраняющейся при смене состояния — users, orders, accounts. Инкапсулируют инварианты и переходы жизненного цикла вместо mutable bags of fields. Identity equality ≠ value equality; два заказа с одинаковыми данными, но разными ID, не взаимозаменяемы.
На интервью: order entity со status transitions. Почему не каждая строка БД заслуживает rich entity behavior.
Типовые ошибки: entities без инвариантов; сравнение identity по атрибутам; god entities с HTTP или SQL.
Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.
Чеклист:
- Стабильное identity field при updates.
- Методы поведения сохраняют инварианты.
- Equality по identity, не по всем полям.
- Persistence mapping отдельно от entity API.