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

时间:2015-02-10 07:15:19

标签: java parameters constructor model builder

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

由于代码读取的次数多于写入次数,因此我建议使用在这种情况下提高可读性的选项。转到构建器并确保在错误地使用构建器时,在调用build()方法失败时尽快验证所有参数。使用javadoc协助通信所有参数都是必需的。

答案 1 :(得分:3)

如果要创建不可变对象,必须提供包含所有必填字段的构造函数

您无法将状态设置为部分,因为稍后您必须添加一些概念" setters"根据定义,会增加可变性

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