具有长参数列表或多个setter的构造函数?

时间:2011-03-30 12:29:34

标签: java constructor long-parameter-list

要初始化实例,我们可以使用默认的构造函数和许多setter,也可以使用带有长参数列表的构造函数。在后一种方式中,对象状态可以在生成对象之后保持不变(因为没有setter),但是长参数列表是丑陋且容易出错的。在前一种方式中,长参数列表是避免的,但是在完全创建对象之后,设置者可能会错误地更改对象状态。

我需要这样一个对象,它的内部字段在创建对象后应保持不变,而我不喜欢长参数列表。这样做的最佳做法是什么?

2 个答案:

答案 0 :(得分:9)

使用Builder pattern

Foo foo = new FooBuilder().setBar(...).setBaz(...).build();

答案 1 :(得分:2)

长参数列表可以(但不一定)表示该类应该重构为较小的类。