0

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

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

4

2 回答 2

9

使用建造者模式

Foo foo = new FooBuilder().setBar(...).setBaz(...).build();
于 2011-03-30T12:30:44.347 回答
2

一个长的参数列表可能(但不是必须)意味着该类应该被重构为更小的类。

于 2011-03-30T12:41:54.650 回答