![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: нет Всего: 6 |
Недавно прочитал статью Мартина Фаулера, про реализацию нового шаблона проектирования называемый IoC(Invension of controll containers) которую можно найти сдесь: http://www.martinfowler.com/articles/injection.html.
Т.к все приведённые там примеры приводились на языке JAVA, то меня больше всего интересует, какие метасредства Явы используются для реализации подобного контейнера ? Иными словами, какие средства языка необходимы для его реализации. Заранее благодарен. -------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Насчет средств языка не знаю, но популярный Java-фреймворк Spring ориентирован именно на реализацию этого паттерна. Стоит посмотреть в его сторону.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: нет Всего: 6 |
Да, я про это слыхал, но мне чуток не то надо. Меня интересует как (с помощью каких средств) оне это делают.
-------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
В простейшем случае не нужно ничего экстраординарного. Во-первых, этот самый Dependency Injection бывает двух типов - Property-Based Injection и Constructor-Based Injection. В первом случае для инициализации объекта используются стандартные для java-бина методы установки значения атрибута и получения его значения (например, setParent() и getParent()). Во втором случае для инициализации используется конструктор. Получается, что для реализации того и другого нужны просто методы и конструкторы, которые в Java были всегда.
Кроме того, IoC тесно связан с Java Reflection. Все IoC-контейнеры, которые я знаю, описывают взаимосвязи между объектами в файле XML. Естественно, все атрибуты объектов там описаны в виде текста и для того, чтобы найти нужный метод или конструктор, передать ему параметры и выполнить его придется использовать Reflection. Ну вот, по минимум вроде больше ничего не нужно. Хотя можно конечно и все сделать и более извращенно, для примера посмотри здесь - http://today.java.net/pub/a/today/2005/07/...Annotation.html. |
|||
|
||||
| pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: нет Всего: 6 |
Есть ещё и 3 вид, называемый Interface Injection, но он очень редко используется. -------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
| onsh76 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 20.11.2005 Где: Beautiful BC Репутация: нет Всего: 5 |
Наверное не ошибусь если скажу что ключевыми являются использование: - reflection и грамотное использование технологии JavaBean(в смысле не только применение простых вещей таких как getters/setters); - встроенный в JDK API dynamic proxy implementation; либо библиотека CGLIB, если нет связки interface-class у инжектируемого контента, а есть только class. - interface-ов и паттернов; |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |