要初始化实例,我们可以使用默认的构造函数和许多setter,也可以使用带有长参数列表的构造函数。在后一种方式中,对象状态可以在生成对象之后保持不变(因为没有setter),但是长参数列表是丑陋且容易出错的。在前一种方式中,长参数列表是避免的,但是在完全创建对象之后,设置者可能会错误地更改对象状态。
我需要这样一个对象,它的内部字段在创建对象后应保持不变,而我不喜欢长参数列表。这样做的最佳做法是什么?
答案 0 :(得分:9)
Foo foo = new FooBuilder().setBar(...).setBaz(...).build();
答案 1 :(得分:2)
长参数列表可以(但不一定)表示该类应该重构为较小的类。