Я давно использовал отражение, чтобы отделить модули от "обработчиков".
У меня есть кодовая база, которая выглядит следующим образом:
static enum AnimalHandlers {
Dog(Dog.class),
Cat(Cat.class);
private final Class c;
AnimalHandlers(Class class)
{
this.c=class;
}
public Class getAnimalHandler()
{
return c;
}
}
Затем в моем коде у меня есть метод, который принимает перечисление «Animal» в качестве входных данных и использует отражение (то есть получает класс из перечисления и вызывает «newInstance») для вызова необходимого обработчика.
Я думаю, что решение было бы чище с Guice. Как я могу избавиться от перечисления / отражения и просто использовать подсказку, чтобы «увлажнить» мой модуль управления с помощью специфичных для домена логических обработчиков?