Я узнаю об DDD и натолкнулся на утверждение, что «ценности-объекты» должны быть неизменными. Я понимаю, что это означает, что состояние объектов не должно меняться после его создания. Для меня это новый вид мышления, но во многих случаях это имеет смысл.Как создать неизменяемый объект со сложной инициализацией
Итак, я начинаю создавать неизменные объекты ценности.
- Я убедиться, что они принимают все государство в качестве параметров конструктора,
- Я не добавить сеттеры собственности,
- и убедитесь, что никакие методы не могут изменять содержимое (возвращать только новые экземпляры).
Но теперь я хочу создать этот объект значения, который будет содержать 8 различных числовых значений. Если я создаю конструктор с 8 числовыми параметрами, я чувствую, что это будет не очень легко использовать, точнее - будет легко совершить ошибку при передаче чисел. Это не может быть хорошим дизайном.
Итак, есть вопросы: Есть ли еще какие-либо способы сделать мой неизменный объект лучше .., любую магию, которая может быть выполнена на C#, чтобы преодолеть длинный список параметров в конструкторе? Мне очень интересно услышать ваши идеи ..
UPDATE: Прежде чем кто упоминает об этом, одна идея обсуждалась здесь: Immutable object pattern in C# - what do you think?
Было бы интересно услышать другие предложения или комментарии, хотя.
Вы также должны сделать все поля только для чтения. Это делает неизменность более декларативной. – JaredPar 2008-12-10 05:57:09