Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Invension of controll containers 
:(
    Опции темы
pablo
Дата 16.3.2006, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: нет
Всего: 6



Недавно прочитал статью Мартина Фаулера, про реализацию нового шаблона проектирования называемый IoC(Invension of controll containers) которую можно найти сдесь: http://www.martinfowler.com/articles/injection.html.

Т.к все приведённые там примеры приводились на языке JAVA, то меня больше всего интересует, какие метасредства Явы используются для реализации подобного контейнера ? Иными словами, какие средства языка необходимы для его реализации.

Заранее благодарен.


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
batigoal
Дата 16.3.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Насчет средств языка не знаю, но популярный Java-фреймворк Spring ориентирован именно на реализацию этого паттерна. Стоит посмотреть в его сторону.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
pablo
Дата 16.3.2006, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: нет
Всего: 6



Да, я про это слыхал, но мне чуток не то надо. Меня интересует как (с помощью каких средств) оне это делают.


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
tux
Дата 17.3.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 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.
PM MAIL Skype GTalk Jabber YIM   Вверх
pablo
Дата 17.3.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: нет
Всего: 6



Цитата

Во-первых, этот самый Dependency Injection бывает двух типов - Property-Based Injection и Constructor-Based Injection

Есть ещё и 3 вид, называемый Interface Injection, но он очень редко используется.


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
onsh76
Дата 17.3.2006, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 20.11.2005
Где: Beautiful BC

Репутация: нет
Всего: 5



Цитата(Lamer George @ 16.3.2006, 11:01)
...какие метасредства Явы используются для реализации подобного контейнера ? Иными словами, какие средства языка необходимы для его реализации.

Наверное не ошибусь если скажу что ключевыми являются использование:
- reflection и грамотное использование технологии JavaBean(в смысле не только применение простых вещей таких как getters/setters);
- встроенный в JDK API dynamic proxy implementation; либо библиотека CGLIB, если нет связки interface-class у инжектируемого контента, а есть только class.
- interface-ов и паттернов;


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0597 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.