2009-11-23 2 views
6

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

ответ

9

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

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

Объекты являются изменяемыми типами (по крайней мере, по понятию). Вся идея Entity заключается в том, что он представляет собой концепцию домена с известной прогрессией жизни (т. Е. Она создана, она претерпевает несколько преобразований, архивируется и, возможно, в конечном итоге удаляется). Он представляет ту же самую «вещь», даже если месяцы или годы проходят мимо, и это изменяет состояние по пути.

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

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

Смежные вопросы