2009-09-23 3 views
2

Я играл с идеей разрешить модуль с классом в файле свойств; что-то вродеРекомендации: что использовать Reflection?

availableModules.properties 
Contact=org.addressbook.ContactMain 
Business=org.addressbook.BusinessMain 
Notes=org.addressbook.Notes 

...

Моей структура будет использовать отражение для создания экземпляра соответствующих модулей, а затем вызывать методы на соответствующих базовые классах, или передавать объекты в качестве параметров по мере необходимости.

  • Является ли это хорошим местом для использования отражения?
  • Есть ли какие-либо рекомендации относительно того, где использовать отражение, уже опубликованное на SO (я не мог его найти)? Можем ли мы начать список по этим строкам с любыми отзывами, размещенными здесь?

EDIT Вот еще один пример сценариев, которые я имею в виду.

Некоторые основные коды, необходимые для определения точки вызова. Одно приложение, которое я видел, достигло этого, используя отражение, другое приложение использовало исключение. Считаете ли вы, что первое является рекомендуемым сценарием, в котором может применяться рефлексия?

+3

Dupe of http://stackoverflow.com/questions/37628/what-is-reflection-and-why-is-it-useful – Graviton

+0

Увидел вопрос «Что такое отражение и почему оно полезно?» (+: Пожалуйста, не стесняйтесь стрелять в меня, если я ошибаюсь. В дополнение к тому, что я использую отражение правильно, я также ищу список сценариев, где нужно использовать Reflection, а чем почему это полезно. – Everyone

ответ

5

Для отличной рамки, поддерживающей вашу идею, посмотрите на the IOC container of the spring framework.

+0

Yeap- этот вопрос сразу заставил меня задуматься о IOC – RichardOD

+0

+1 IOC: меня тоже. Используйте Spring framework, как только вы поняли все, что вы не будете жить без него. – Juri

+0

Aw c'mon guys (+: Я ищу список мест, где можно использовать Reflection. В любом месте, где мандат МОК почти полностью покрывает его, но UI Framework - это всего лишь один элемент в списке – Everyone

2

Является ли это хорошим местом для использования отражение?

Я бы сказал, нет. Если вы хотите делать такие вещи, вероятно, вы должны использовать одну из (уже существующих) зрелых фреймворков, которые поддерживают инверсию управления, например, инъекцию зависимостей. Весна IOC является самой популярной, но есть и многие другие. Google для «ioc framework java».

Под капотом эти рамки, скорее всего, используют отражение. Но это не значит, что вы должны изобретать велосипед.

0

Обычно я использую отражение, если хочу динамически использовать класс, информация (имя сборки, имя класса, имя метода, параметры метода и т. Д.) Хранится в строке (текстовые файлы или база данных).

Смежные вопросы