6

Вопрос по domain-driven-design – DDD: объектами соединения являются объект сущности или объект значения?

Я работаю над приложением, в котором пользователи могут следовать друг за другом, подобно Twitter. После прочтения DDD я понимаю, что мои пользователи - это Entity Objects - я обращаюсь к ним, используя их уникальный идентификатор. Когда один ...

2 ответа

5

Вы правы в том, что сущности являются уникальными и несут в себе понятие идентичности (то есть может существовать только один уникальный пользователь).Connection зависит от другихUser юридические лица. Это представляет некоторый аспект между двумя пользователями. Этот аспект заключается в том, существует ли активное или неактивное соединение. Без данных, к которым подключаются пользователи, соединение не имеет идентификатора. Он может даже иметь свой собственный первичный ключ в базе данных, но с точки зрения предметной области он не имеет идентификатора своего собственного.

Поэтому я бы сказал, чтоConnection этоvalue объект.


Чтобы поддержать мой вывод,Microsoft.Net Архитектура приложений для предприятияна странице 187 говорится:

A value object class represents an entity in the domain that mostly contains data and lives for the data it contains. A value object is fully identified by a combination of values it contains. An entity object, on the other hand, has its own life and rich behavior regardless of the data it contains. Entity objects are usually objects with a longer lifetime. A value object represents an aspect of an entity and can live only in relation to an entity.

А также на странице 189:

One further comment is needed to explain the difference between entities and value objects. You don’t need a repository or a data mapper for a value object. You need a repository only for an entity. The repository (or the mapper) for a given entity will certainly take care of all value objects that depend on a given entity.

3

Некоторое время назад я увидел мультфильм об ученом, который изобрел клонирование. Каждый раз, когда он клонировал себя, он разрушал предыдущую версию. Тогда человек, который наблюдал за демонстрацией, решил прервать и саботировать часть уничтожения, так что там были два ученых. Мультфильм закончился интересным экзистенциальным опросом.

Значения против сущностей - это не наличие или отсутствие полей идентификаторов в той или иной форме. Дело в том, как мы смотрим на эти объекты с точки зрения нашей предметной области. Если они являются объектами ценностей, то важны только их ценности - 1-й, 3-й и 53-й ученые. Если мы заботимся об идентичности, если мы думаем, что клонирование 3-го ученого никогда не будет таким же, как 1-е, тогда наш объект является сущностью.

Похожие вопросы