DDD ( ДДД ):какая польза от разницы между сущностями и объектами значений?

StackOverflow https://stackoverflow.com/questions/1785380

Вопрос

Сущности и объекты значений являются объектами домена.Какой смысл знать различие между ними в DDD?Например, способствует ли представление об объектах домена как о сущности или объекте значения созданию более чистой модели домена?

Это было полезно?

Решение

Да, очень полезно уметь определять разницу, особенно когда вы разрабатываете и внедряете свои типы.

Одно из основных отличий заключается в том, когда речь заходит о равенстве, поскольку сущности должны вести себя совершенно иначе, чем объекты Value .Знание того, является ли ваш объект сущностью или объектом-значением, подсказывает вам, как вы должны реализовать равенство для этого типа.Это полезно само по себе, но на этом дело не заканчивается.

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

Объекты-ценности, с другой стороны, просто представляют ценности без какой-либо присущей им идентичности.Хотя вам не обязательно это делать, они чрезвычайно хорошо подходят для реализации в виде неизменяемых типов.Это очень интересно, потому что любой неизменяемый тип по определению потокобезопасен.Поскольку мы вступаем в эпоху многоядерности, знание того, когда следует реализовать объект как неизменяемый тип, очень ценно.

Это также очень помогает в модульном тестировании, когда семантика равенства хорошо известна.В обоих случаях равенство четко определено.Я не знаю, какой язык вы используете, но во многих языках (C #, Java, VB.NET ) равенство определяется по ссылке по умолчанию, что во многих случаях не особенно полезно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top