Глоссарий

Value Object

Value Object — объект, представляющий концепт через своё значение, а не через идентификатор. Два Value Objects равны, если равны их поля. Всегда неизменяем: вместо мутации — возвращается новый объект.

Примеры

Money, Email, PhoneNumber, DateRange, Coordinates — концепты без собственной идентичности. Money(100, 'USD') равно другому Money(100, 'USD').

Преимущества

Vs Entity

Entity имеет идентификатор и может меняться (User с id=42 остаётся тем же User, даже если изменилось имя). Value Object не имеет id — идентичность = значение.