2011-03-30 2 views
0

인스턴스를 초기화하려면 기본 구성자와 여러 설정 자 중 하나 또는 긴 매개 변수 목록이있는 생성자를 사용할 수 있습니다. 후자의 경우 객체가 생성 된 후에 객체 상태가 변경되지 않을 수 있지만 (setter가 없기 때문에) 긴 매개 변수 목록은 추악하고 오류가 발생하기 쉽습니다. 이전 방법에서는 긴 매개 변수 목록을 사용하지 않지만 개체가 완전히 만들어지면 실수로 설정자가 개체 상태를 변경할 수 있습니다.매개 변수 목록이 긴 구성자 또는 여러 설정자?

긴 매개 변수 목록이 마음에 들지 않지만 개체를 ​​만든 후에는 내부 필드가 변경되지 않는 개체가 필요합니다. 가장 좋은 방법은 무엇입니까?

답변

9

사용 Builder pattern :

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

+1 : 빌더는 일부 필수 필드에 대해 생성자 인수를 가질 수도 있습니다. 즉 패턴을 사용하여 아무 것도 잃지 않습니다. –

+0

+1 _Item 2 : 많은 생성자 매개 변수가있는 작성기 고려 _ – mre

+3

작성기 패턴을 고려할 때 매개 변수가 실제로 개별 값인지 또는 클래스로 승격 될 수있는 속성 그룹의 일부인지 여부도 고려하십시오. 따라서이 생성자 시그니처를 더 적은 수의 매개 변수로 대체 할 수 있지만 각 매개 변수는 더 높은 수준의 추상화를 나타냅니다. 이것은 그렇지 않을 수도 있습니다.이 경우 빌더 패턴은 훌륭하지만 최소한 고려해야합니다. – MeBigFatGuy

2

긴 매개 변수 목록은 (그러나이없는) 수는 클래스가 작은 클래스 리팩토링되어야한다는 것을 의미한다.

관련 문제