Я не понимаю, почему объекты ценности в DDD должны быть неизменными, и я не вижу, как это легко сделать. (Я занимаюсь С# и Entity Framework, если это имеет значение.)
Например, рассмотрим классический объект значения адреса. Если вам нужно изменить "123 Main St" на "123 Main Street", почему мне нужно построить целый новый объект вместо того, чтобы сказать myCustomer.Address.AddressLine1 = "123 Main Street"? (Даже если Entity Framework поддерживает структуры, это все равно будет проблемой, не так ли?)
Я понимаю (я думаю) идею о том, что объекты ценности не имеют идентификатора и являются частью объекта домена, но может ли кто-нибудь объяснить, почему неизменяемость является хорошей вещью?
EDIT. Мой последний вопрос здесь действительно должен быть "Может ли кто-нибудь объяснить, почему неизменяемость - это хорошая вещь применительно к объектам Value?" Извините за путаницу!
РЕДАКТИРОВАТЬ. К clairfy, я не спрашиваю о типах значений CLR (типы ссылок vs). Я спрашиваю о концепции DDD более высокого уровня объектов Value.
Например, вот хакерский способ реализации неизменяемых типов значений для Entity Framework: http://rogeralsing.com/2009/05/21/entity-framework-4-immutable-value-objects. В принципе, он просто делает всех сеттеров частным. Зачем решать эту проблему?