具有许多必需参数的构造函数

Constructor with many required parameters

如果我有一个需要多个(4 个以上参数)的不可变对象的构造函数,那么使用一个包含所有必需参数的构造函数是否是正确的方法?

我觉得这成为 Builder 模式的候选者,但我也想回避它,因为参数是 必需的,当你得到时,Builder 似乎更合适挑选。

我心目中的例子是一个一旦创建就不会改变的模型对象。

如果你想创建一个不可变对象,你必须提供一个包含所有必需字段的构造函数

您不能部分设置状态,因为稍后您必须添加一些 "setters" 的概念,这将 根据定义添加可变性.

构建器模式实际上是关于部分对象构建。

正如您所建议的,这两种选择都有其缺点。四参数构造函数很难正确使用并使代码难以阅读。但是,它传达了所有参数都是强制性的意图。

构建器会更易于使用并使代码更易于阅读,但传达了参数是可选的意图。

由于阅读代码的次数多于编写代码的次数,我建议在这种情况下使用提高可读性的选项。寻找构建器并确保在调用 build() 方法时验证所有参数,以便在错误使用构建器时尽快失败。使用 javadoc 来协助传达所有参数都是必需的。