Чтобы убедиться, что вы не пропустили ни одного параметра, вы можете использовать определенный вариант в шаблоне компоновщика.Я называю это «Именованные параметры»:
public final class MyClassBuilder {
public static Param2 param1(String param1) {
return param2 -> param3 -> param4 -> param5 -> new MyClass(
param1, param2, param3, param4, param5
);
}
public interface Param2 {
Param3 param2(String value);
}
public interface Param3 {
Param4 param3(int value);
}
public interface Param4 {
Param5 param4(boolean value);
}
public interface Param5 {
MyClass param5(Object value);
}
}
Использование в таком случае выглядит следующим образом:
MyClass m = MyClassBuilder.param1("1")
.param2("2")
.param3(3)
.param4(false)
.param5(new Object());
С этим шаблоном компилятор (и любая IDE) будет принудительно устанавливать порядок параметров и вызыватьвсе они, как и любое промежуточное состояние, не позволяют получить результат.Он также не требует никакого дополнительного метода build (), так как последний параметр уже может возвращать результат.
Это немного больше кода, но я планирую создать генератор кода для него в моем проекте: https://github.com/c0stra/fluent-api-generator