相关疑难解决方法(0)

在不使用具有长参数列表的构造函数的情况下构建大的不可变对象

我有一些大的(超过3个字段)对象,它们可以而且应该是不可变的.每次遇到这种情况时,我倾向于使用长参数列表创建构造函数可恶.它感觉不对,难以使用,可读性受损.

如果字段是某种类似列表的集合类型则更糟糕.一个简单的方法addSibling(S s)可以简化对象的创建,但会使对象变得可变.

在这种情况下你们有什么用?我在使用Scala和Java,但我认为只要语言是面向对象的,问题就是语言不可知.

我能想到的解决方案:

  1. "具有长参数列表的构造函数可憎"
  2. Builder模式

感谢您的输入!

java oop scala immutability

96
推荐指数
7
解决办法
1万
查看次数

如何设计具有复杂初始化的不可变对象

我正在学习DDD,并且遇到了"值 - 对象"应该是不可变的声明.我知道这意味着对象状态在创建后不应该更改.这对我来说是一种新的思维方式,但在许多情况下它是有道理的.

好的,所以我开始创建不可变的值对象.

  • 我确保他们将整个状态作为构造函数的参数,
  • 我没有添加属性设置器,
  • 并确保不允许任何方法修改内容(仅返回新实例).

但是现在我想创建这个包含8个不同数值的值对象.如果我创建一个具有8个数字参数的构造函数,我觉得它不会很容易使用,或者更确切地说 - 传递数字时很容易出错.这不是一个好的设计.

所以问题是:是否还有其他方法可以使我的不可变对象变得更好..,在C#中可以用来克服构造函数中的长参数列表的任何魔法?我很想听听你的想法..

更新:在任何人提到它之前,这里讨论了一个想法: C#中的不可变对象模式 - 你怎么看?

有兴趣听取其他建议或意见.

c# domain-driven-design immutability

13
推荐指数
2
解决办法
5378
查看次数

标签 统计

immutability ×2

c# ×1

domain-driven-design ×1

java ×1

oop ×1

scala ×1