2011-01-20 2 views
4

Можно создать дубликат:
What's the best way to refactor a method that has too many (6+) parameters?Long параметр в конструкторе в Java

Если конструктор имеет длинный список параметров, мы должны рассматривать это плохой стиль и реорганизовать его? Если да, то как?

+2

Иногда. У вас может возникнуть соблазн группировать некоторые параметры в «контекст», но это противоречит закону Деметры. Возможно, это не список параметров, но класс неправильный, поскольку он слишком много. – maaartinus

ответ

3

Это может быть соответствующий набор параметров, но в то же время мой ответ будет да. Разделите параметры на логические подгруппы, если они существуют, а не создают автомобиль из разных частей, сгруппируйте некоторые части в объект Engine, некоторые в Chasis и т. Д.

В качестве альтернативы, если некоторые из этих параметров являются необязательными, использование шаблона построителя, чтобы вы включали их только в случае необходимости.

В конечном счете, сделайте то, что имеет наибольшее значение для вас и вашего домена.

11

Рассмотрите возможность использования Builder. Вместо того, чтобы иметь конструктор, где некоторые параметры могут быть null:

Foo foo = new Foo(name, id, description, path, bar); 

И вместо телескопических конструкторами - т.е. делая один конструктор для каждой комбинации параметров, вы можете иметь:

Foo foo = new FooBuilder().setName(name).setPath(path).build(); 
Смежные вопросы