Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Инициализация движка/фабрики


Автор: sandello 18.11.2005, 11:22
Представим небольшой проект, определющий набор фабричных интерфейсов и использующий их. Особенность в том, что инициализацию фабрик проводится внутри проекта.

Один из методов реализации: в конфигурационном файле проекта описывается, какими классами нужно инициализировать фабрики. При старте проект читает файл, сознает необходимые экземпляры. Особенности: необходимо в документации проекта декларировать наличие определенного конструктора (чаще всего - конструктора без аргументов). В противном случае, фабрику, реализующую нужный интерфейс, может быть невозможно создать. И соответствие реализации необходимым ограничениям можно проверить только самому.

Вопрос:
какие шаблоны, готовые механизмы используются для решения подобной задачи.
Подобную задачу решает штатный java механизм, использующий META-INF/services, на сколько он "кошерен"? Может есть более качественные/удобные решения?


Автор: tux 18.11.2005, 14:13
Это классическая задача для шаблона проектирования Inversion of Control и облегченных контейнеров, например http://www.picocontainer.org/, http://www.springframework.org/ или веб-фреймворка http://www.opensymphony.com/webwork/. Упомянутые библиотеки этот шаблон реализуют.

Про Inversion of Control можно почитать http://www.martinfowler.com/articles/injection.html на английском или http://lib.juga.ru/article/articleview/218/1/0.

Автор: sandello 18.11.2005, 14:24
Задача-то классическая. Но мне не хочется тащить целый фреймворк для инициализации одной-двух фабрик.

Автор: tux 18.11.2005, 14:33
PicoContainer - размером 99К

Автор: sandello 21.11.2005, 08:19
Мне у Pico лицензия не нравится. Есть GPL'ные аналоги?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)