Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.01.2014, 12:11
Новичок на форуме
Отправить личное сообщение для gonosq Посмотреть профиль Найти все сообщения от gonosq
 
Регистрация: 27.01.2014
Сообщений: 4

Understanding Dependency Injection
В настоящий момент изучаю сами знаете какой супергероический фреймворк))

Концептуально непонятно одна вещь: зачем нужно внедрение зависимостей?

Конечно сейчас кто-то упал со стула от моей вопиющей невежественности, но тем не менее. Из всего что я успел прочитать, DI упоминается чаще всего в связке с сервисами.

Например мне нужно использовать в моём контроллере некий самописный сервис myserv. Чтобы иметь его в списке аргументов функции инициализации контроллера я выполняю некий ритуал описанный в офф. доке и прочих разных мануалах, туториалах и статьях. Этот ритуал для меня ещё несколько мутноват отчасти как-раз из-за того, что непонятна конечная цель.

Итак, пусть мой сервис myserv настраивает что-то на сервере используя xhr (ajax). Вместо использования DI я вполне могу объявить window.services и разместить в нём все необходимые мне сервисы, в том числе и myserv.
Это единственная вещь, которую я должен сделать дополнительно к написанию самого сервиса, т.к. она позволит избежать конфликта имён в глобальной области видимости. Почему я должен делать что-то ещё?

Что могло бы обосновать использования DI:
1. Ленивая подгрузка сервисов. А она есть в angular?
2. Встроенные сервисы не будут доступны в коде новых сервисов если не оформить их как положен))
3. Я вообще всё не так понял

И пожалуй всё. Больше не вижу причин.

Буду признателен если уже использующие angular прояснили эти моменты, а то вкуривать во всякие магические ритуалы не видя цели очень скушно))
Ответить с цитированием
  #2 (permalink)  
Старый 27.01.2014, 15:10
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от gonosq
3. Я вообще всё не так понял
//
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 27.01.2014, 15:42
Новичок на форуме
Отправить личное сообщение для gonosq Посмотреть профиль Найти все сообщения от gonosq
 
Регистрация: 27.01.2014
Сообщений: 4

Просьба к понимающим правильно: поясните.

Если абстрагироваться от языка и фреймворка.
Я понимаю, например, когда один модуль зависит от других, менеджер зависимостей может подтянуть недостающие на этапе сборки или исполнения.

А что происходит в angular?
Ответить с цитированием
  #4 (permalink)  
Старый 27.01.2014, 16:22
Новичок на форуме
Отправить личное сообщение для gonosq Посмотреть профиль Найти все сообщения от gonosq
 
Регистрация: 27.01.2014
Сообщений: 4

Цитата:
Что могло бы обосновать использования DI:
1. Ленивая подгрузка сервисов. А она есть в angular?
2. Встроенные сервисы не будут доступны в коде новых сервисов если не оформить их как положен))
3. Я вообще всё не так понял
4. Возможность делать заглушки для сервисов при юнит тестировани (это первая, более или менее весомая причина)
Ответить с цитированием
  #5 (permalink)  
Старый 27.01.2014, 16:58
Новичок на форуме
Отправить личное сообщение для gonosq Посмотреть профиль Найти все сообщения от gonosq
 
Регистрация: 27.01.2014
Сообщений: 4

Сообщение от gonosq Посмотреть сообщение
4. Возможность делать заглушки для сервисов при юнит тестировани (это первая, более или менее весомая причина)
5. Улучшается переносимость модулей.
5.1 Все зависимости перечислены при объявлении модуля и не надо выискивать их в коде
5.2 Возможны альтернативные реализации зависимостей при соблюдении интерфейса работы с ними (по сути так-же как с юнит тестами)

Использовать ли DI для своих сервисов, для меня пока вопрос открытый, а они у меня будут и много.
Как говорит нам википедия: "С другой стороны, излишнее использование внедрения зависимостей может сделать приложения более сложными и трудными в сопровождении ...". И я с этим абсолютно согласен.

В общем, я на свой вопрос ответил. Кто имеет что добавить - пишите.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Dependency Injection в JS katsgeorgeek AJAX и COMET 0 09.01.2012 18:06