Как выбрать конкретную реализацию на основе выбора пользователя?

У меня есть интерфейсFruit с двумя реализациямиApple а такжеBanana, Я хочу создатьFruit пример. Выбор, должна ли конкретная реализация бытьApple илиBanana должен быть сделан пользователем. Я еще не проектировал пользовательский интерфейс, поэтому нет никаких ограничений в том, как этот выбор будет сделан пользователем.

Я знаю, что есть следующие варианты:

использование абстрактного фабричного шаблонаиспользование отражения для создания экземпляра с заданным именем классаиспользование отражения для создания экземпляра из данного объекта класса

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

Обратите внимание, что, хотя есть несколько похожих вопросов, в которых обсуждается тот или иной подход, я не нашел ни одного сравнения.

Вот список связанных вопросов:

Почему Class.newInstance () "злой"?Могу ли я использовать Class.newInstance () с аргументами конструктора?Как сделать ArrayList из классов?Соответствует ли Class.newInstance () шаблону проектирования «Абстрактная фабрика»?

Ответы на вопрос(1)

Ваш ответ на вопрос