Как выбрать конкретную реализацию на основе выбора пользователя?
У меня есть интерфейсFruit
с двумя реализациямиApple
а такжеBanana
, Я хочу создатьFruit
пример. Выбор, должна ли конкретная реализация бытьApple
илиBanana
должен быть сделан пользователем. Я еще не проектировал пользовательский интерфейс, поэтому нет никаких ограничений в том, как этот выбор будет сделан пользователем.
Я знаю, что есть следующие варианты:
использование абстрактного фабричного шаблонаиспользование отражения для создания экземпляра с заданным именем классаиспользование отражения для создания экземпляра из данного объекта классаКаковы плюсы и минусы этих вариантов?
Обратите внимание, что, хотя есть несколько похожих вопросов, в которых обсуждается тот или иной подход, я не нашел ни одного сравнения.
Вот список связанных вопросов:
Почему Class.newInstance () "злой"?Могу ли я использовать Class.newInstance () с аргументами конструктора?Как сделать ArrayList из классов?Соответствует ли Class.newInstance () шаблону проектирования «Абстрактная фабрика»?