У меня есть фабричный метод, который возвращает реализацию интерфейса. Дело в том, что у реализаций разные параметры конструктора.
Мой вопрос - как передать параметры через фабричный метод в разные реализации интерфейса?
У меня есть идея, но я не уверен, что это имеет смысл - передать объект свойств фабричному методу? Таким образом, каждая из реализаций интерфейса может получить свойства, необходимые для ее конструктора, а фабричный интерфейс будет унифицирован.
Имеет ли это смысл, или есть лучшее решение?
Я решил добавить пример, чтобы лучше прояснить проблему.
Допустим, у нас есть интерфейс SomeAlgorithm
и у нас есть конкретные алгоритмы, где каждый алгоритм может иметь разные параметры, например.
SomeAlgorithm algo = new Algo1();
SomeAlgorithm algo = new Algo2(noOfIterations);
SomeAlgorithm algo = new Algo3(precision, boundary);
Я хотел бы иметь возможность сделать что-то вроде
SomeAlgorithm algo = AlgoFactory.getAlgo("algoName");
Мой подход к обработке различных параметров будет
SomeAlgorithm algo = AlgoFactory.getAlgo("algoName", properties);
Затем AlgoFactory может передать соответствующие свойства конструктору конкретного алгоритма, если алгоритм вообще имеет параметры (например, Algo1 не имеет параметров). Если какое-то свойство отсутствует, может быть передано значение по умолчанию (если это значение требуется в алгоритме).
Как видите, я хотел бы иметь возможность динамически изменять алгоритм. Пользователь выберет алгоритм во время выполнения и передаст соответствующие параметры, которые будут помещены в объект свойств.
Будет ли это иметь смысл?