| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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'ные аналоги? |