Объекты значений в DDD - Почему неизменяемый ?

Я не понимаю, почему объекты значений в DDD должны быть неизменными, и я не понимаю, как это легко сделать. (Я сосредотачиваюсь на C # и Entity Framework, если это важно. )

Например, давайте рассмотрим классический объект значения Address. Если вам нужно было изменить «123 Main St» на «123 Main Street », зачем мне создавать новый объект вместо того, чтобы говорить myCustomer.Address.AddressLine1 = «123 Main Street»? (Даже если Entity Framework поддерживает структуры, это все равно будет проблемой, не так ли?)

Я понимаю (я думаю) идею о том, что объекты значений не имеют идентичности и являются частью объекта домена, но Может кто-нибудь объяснить, почему неизменность - это хорошо?


РЕДАКТИРОВАТЬ : Мой последний вопрос здесь действительно должен быть следующим: «Может ли кто-нибудь объяснить, почему неизменность - это хорошо применительно к объектам-значениям ?» Извините за путаницу!


РЕДАКТИРОВАТЬ : Чтобы уточнить, я не спрашиваю о типах значений CLR (по сравнению с ссылочными типами). Я спрашиваю о концепции DDD более высокого уровня для объектов значений.

Например, вот хакерский способ реализации неизменяемых типов значений для Entity Framework: http://rogeralsing.com/2009/05 / 21 / entity-framework-4-неизменяемые объекты-значения . По сути, он просто закрывает всех сеттеров. Зачем это делать?

33
задан Hobbes 3 January 2011 в 02:50
поделиться