2011-01-07 7 views
4

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

Очень простой пример конструктора:

Burger(bun, meat, cheese, lettuce) 
    this.bun = bun 
    this.meat = meat 
    ... 

Vs

Burger(grocery) 
    this.bun = grocery.bun 
    this.meat = grocery.meat 
    ... 

Оба способа являются действительными подходы. Первый способ показывает, что происходит в гамбургере, разбивает аргументы на более общие классы, поэтому он уменьшает сцепление, и, как мне кажется, проще проверить, потому что граф объектов проще.

Но второй способ намного проще, чище, и, возможно, гамбургер может потребовать гораздо больше ингредиентов, тогда аргументы в первом случае могут очень сильно надуть.

Хотелось бы узнать, какой способ рекомендуется в такой ситуации? Пойдите для более чистого, но более связанного кода, или более подробного способа.

ответ

5

Передача 4 + параметров любому методу или конструктору не является хорошей идеей или хорошим дизайном.

Я помню, что Джошуа Блох (Effective Java) рекомендуют Builder Pattern в этой ситуации (пункт 2)

Item 2: Рассмотрим строитель, когда сталкиваются со многими параметрами конструктора