我有一些大的(超过3个字段)对象,它们可以而且应该是不可变的.每次遇到这种情况时,我倾向于使用长参数列表创建构造函数可恶.它感觉不对,难以使用,可读性受损.
如果字段是某种类似列表的集合类型则更糟糕.一个简单的方法addSibling(S s)可以简化对象的创建,但会使对象变得可变.
在这种情况下你们有什么用?我在使用Scala和Java,但我认为只要语言是面向对象的,问题就是语言不可知.
我能想到的解决方案:
感谢您的输入!
我正在学习DDD,并且遇到了"值 - 对象"应该是不可变的声明.我知道这意味着对象状态在创建后不应该更改.这对我来说是一种新的思维方式,但在许多情况下它是有道理的.
好的,所以我开始创建不可变的值对象.
但是现在我想创建这个包含8个不同数值的值对象.如果我创建一个具有8个数字参数的构造函数,我觉得它不会很容易使用,或者更确切地说 - 传递数字时很容易出错.这不是一个好的设计.
所以问题是:是否还有其他方法可以使我的不可变对象变得更好..,在C#中可以用来克服构造函数中的长参数列表的任何魔法?我很想听听你的想法..
更新:在任何人提到它之前,这里讨论了一个想法: C#中的不可变对象模式 - 你怎么看?
有兴趣听取其他建议或意见.