#java #guice
#java #интерфейс
Вопрос:
У меня есть несколько классов StrategyAlpha, StrategyBeta, StrategyOmega, которые наследуются от класса Strategy.
Я хотел бы выбрать правильную дочернюю стратегию в зависимости от свойства входных данных, используя guice, платформу внедрения зависимостей.
Является ли подключение зависимостей во время выполнения плохой идеей? Как можно использовать Guice для этого?
Ответ №1:
Вы хотели бы привязать что-то вроде StrategyProvider, который при заданных входных данных возвращает соответствующую стратегию.
Вы всегда можете создать поставщика — что-то вроде:
@Внедрить StrategyProvider(@Named(«альфа») Стратегия альфа, @Named(«бета») Бета-версия стратегии …) { this.alpha = альфа; this.beta = бета; }
Стратегия get(параметр a, параметр b) { if (a> 3 amp;amp; b < 10) { return beta; } else { return alpha; } }
Что такое параметры и почему, скорее всего, определит, имеет ли это смысл.
Комментарии:
1. javabeat.net/articles/29-introduction-to-google-guice-5.html приведен подробный пример того, как использовать поставщиков Guice
Ответ №2:
Похоже, что вам нужна фабрика для создания экземпляра соответствующего объекта в зависимости от набора свойств.
Вы можете реализовать фабрику, используя шаблон проектирования фабрики — http://en.wikipedia.org/wiki/Factory_method_pattern
Комментарии:
1. В Guice то, что вы называете фабриками, называется поставщиками guava-libraries.googlecode.com/svn/trunk/javadoc/com/google /… или провайдеры google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject /…