Re[3]: Dependency Injection объясните?
От: mazurkin http://mazurkin.info
Дата: 12.01.09 20:17
Оценка:
Аноним 106 wrote:

> В общем, никак не могу придумать, в каких случаях может возникнуть необходимость в таких мощных средствах.

> Или я что-то неправильно понял?

IoC — по сути это весьма элементарно и очень просто

Для использования IoC нет никакой крайней необходимости в фреймворках
(хотя с ними конечно удобнее). Вы можете программировать для
микроконтроллеров в реальном времени и использовать IoC в своих классах
(если используете C++). Можете выделить специальный класс, назвать его
контекстом и в нем программным путем связывать классы между собой.

AbstractDisplay display = new LCDDisplay();
display.setWidth(100);
display.setHeight(60);

AbstractRing ring = new MelodicRing();
ring.setPower(0.7);

AbstractController controller = new RuleController();
controller.setRing(ring);
controller.setDisplay(display);


И это уже IoC — котроллер не сам ищет зависимости, а мы принудительно
устанавливаем их ему. Единственное, что следует учесть — то, что
правильный IoC основан на Interface Driven Design: сначала мы определяем
что делает система — контракт (интерфейсы для java, абстрактные классы
для C++), а затем мы программируем реализации — то есть пишем КАК это
будет исполнятся (классы). Причем в порыве творчества или по
необходимости мы можем сделать несколько реализаций на один и тот же
контракт. А главное из всего этого, что компоненты системы знают только
о контрактах друг, друга — а конкретные реализации подсовываются уже
снаружи. Это как раз и уменьшает сцепление между компонентами.

> Не могли бы вы привести примеры проектов, в которых это используется?


Spring Framework, Tapestry, EJB, JSF — куча Java-технологий
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.