Большой набор таких параметров часто (но не всегда) является индикатором того, что вы можете использовать объект для представления набора параметров. Это особенно верно, если либо:
Существует несколько методов с одинаковыми большими наборами параметров, которые можно заменить одним методом, принимающим объект параметра.
Метод называется create...
Итак, ваш приведенный выше код может стать (простите мой C ++, я Java-разработчик):
class BuildVehicleBooking {
Long officeId;
Long start;
Long end;
String origin;
String destination;
String purpose;
String requirements;
Integer numberOfPassengers;
Booking createVehicleBooking () throws ServiceException { ... }
}
Это Образец Строителя . Преимущество этого шаблона заключается в том, что вы можете создавать сложный набор параметров по частям, в том числе несколько вариантов того, как параметры связаны друг с другом, и даже перезаписывать параметры по мере появления новой информации, прежде чем, наконец, вызвать метод create
в конец.
Еще одним потенциальным преимуществом является то, что вы можете добавить verifyParameters
метод, который проверяет их консистенцию, прежде чем идти до creating
конечного объекта. Это применимо в случаях, когда создание объекта включает необратимые шаги, такие как запись в файл или базу данных.
Обратите внимание, что, как и для всех шаблонов, это применимо не в каждом случае и не может применяться в вашем случае. Если ваш код достаточно прост, то этот шаблон может быть слишком сложным. Если код запутался, рефакторинг в этот шаблон может быть хорошим способом упростить его.