Интерфейс Java: повторное подключение зависимости во время выполнения

#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 /…