Преимущество шаблона Java, в котором метод принимает объект в качестве параметра вместо отдельных параметров

Я использую Amazon Glacier через Amazon Java SDK.

Меня поразило, что параметры передаются через объект, а не как отдельные параметры.

Например, чтобы получить выходные данные задания, параметры которого - Vault, JobId, range, используется следующий метод:

client.getJobOutput(new GetJobOutputRequest(Vault, JobId, range));

Вместо:

client.getJobOutput(Vault, JobId, range);

Каковы плюсы и минусы двух подходов?


person Alan    schedule 30.08.2012    source источник
comment
Чистый код для дяди Боба.   -  person EthanB    schedule 30.08.2012


Ответы (1)


Плюсы:

  1. Если ваш метод принимает много параметров, использование объекта параметра делает подпись метода разумной.
  2. Если вы хотите получить дополнительные параметры для метода позже, использование объекта параметра означает, что вам просто нужно добавить еще одно поле в объект param, и подпись метода не должна изменяться.
  3. Если вам нужна пакетная версия метода, просто передайте список объектов param.

Минусы:

  1. Чрезмерная многословность
  2. Другой уровень косвенности
person Abhinav Sarkar    schedule 30.08.2012
comment
+1 Расширяемость сигнатуры метода в публичных методах (например, веб-сервисах). - person EthanB; 30.08.2012
comment
Что касается пункта 2. Неважно, нужно ли вам добавить параметр в метод или в класс параметров. Вам все еще нужно что-то перекомпилировать и предоставить клиенту новый интерфейс. Для веб-сервисов клиентам необходимо генерировать новые заглушки из WSDL. Конечно, вы можете использовать Map<String, Object>, но это очень неправильный подход. - person Piotr Gwiazda; 28.09.2012