Обсуждение:Инверсия управления

Последнее сообщение: 5 лет назад от Коммунар в теме «Определение IoC через DI в корне неверно»

Нужно бы картинку из англиийской достать...

Описание править

Откуда взялось это чудовищное описание? (которое не объясняет, но при этом усложняет и запутывает)

Ссылка ведет на статью http://martinfowler.com/articles/injection.html, но там такого текста я не нашел (там вообще нет даже упоминания про фабрику и компоновщик)...

--HeX16 (обс.) 20:16, 5 сентября 2018 (UTC)Ответить

О названии править

Странно звучит "Обращение контроля", лучше использовать термин "Инверсия управления"

91.77.225.84 13:34, 26 апреля 2008 (UTC) Хайретдинов Д. И.Ответить

Всегда лучше использовать русские термины там, где это возможно. Кажется, что лучше в данном случае будет "Обращение управления" --DpakoH 08:19, 9 мая 2008 (UTC)Ответить
Важно, на мой взгляд, не слово Inversion, а слово Control, которое переводится как Управление, и никогда не переводится как Контроль, предлагаю статью переименовать.--90.189.173.121 17:06, 22 марта 2009 (UTC)Ответить


В статье Ложные друзья переводчика control правильно переводится как управление.

Определение IoC через DI в корне неверно править

Суть IoC не в вынесении/внесении/внедрении(выбирайте любой термин на свой вкус) зависимости, а в обращении контроля над выполняемыми действиями. Dependency Injection это только одно из применений IoC.

Пример принципа IoC: Класс "А" отдаёт управление классу "Б", класс "Б" вызывает методы класса "А".

Пример DI: В процессе реализации программного продукта в классы "А" и "Б" вносится зависимость от интерфейса "И", которая позволяет избежать жёсткого связывания классов "А" и "Б". "А" реализует интерфейс "И", что позволяет вынести класс "Б" в отдельную библиотеку и изменять "А" с "Б" независимо. При этом управление зависимостью отдаётся(вот тут и наблюдаем IoC) внешнему механизму, пусть это будет класс "В" в библиотеке с классом "Б".

Почувствуйте разницу. Первое - абстрактный принцип. Второе - практическое применение этого принципа. Применения могут быть и другими.

ThermIt 12:31, 6 октября 2008 (UTC)Ответить

На самом деле DI есть основная реализация Обращения Управления (IoC). Поэтому эти понятия и стали синонимами.91.77.16.143 20:28, 25 июня 2009 (UTC)91.77.16.143 20:29, 25 июня 2009 (UTC)Ответить

--Goleon 13:21, 14 мая 2010 (UTC) Существует несколько реализаций IoC. В частности шаблон Factory является реализацией IoC: контроль для установления зависимости отдается фабрике. Также service lookup является реализацией принципа IoC: контроль предоставляется сервису. DI также реализует принципы IoC и некорректно приравнивать IoC и DI.Ответить

IOC это вообще очень общее понятие - например есть консольное приложение которое запрашивает ввод, а мы его заменяем оконным приложением с message dispatcher loop - тогда мы делегируем управление операционной системе. И не важно swing это или winforms или сервлет - принцип совершенно общий. То что описано в статье - это Dependency Inversion Principle. Dependency Injection это еще одно понятие где мы применяем IoC для внедрения зависимостей короче, только больше путаницы эта статья вносит. 83.149.9.10 12:09, 26 ноября 2012 (UTC)БорисОтветить

Akudrevatykh 17:42, 29 мая 2014 (UTC) Даже Фаулер в приведенной ссылке говорит, что многие люди почему-то ставят равенство между DI и IoC, хотя он сам объясняет его при помощи классического listener-а. Кроме того, формулировка, приведенная в статье вообще неверна - IoC чудесно реализуется без ООП, программирования через интерфейсы и прочего. На мой взгляд главное, что есть в IoC - это принцип "наш код не будет вызывать что-то, пусть что-то другое вызывает нас", и тогда сразу становится понятно, каким образом listener-ы, фабричные методы и DI реализуют IoC, а также причем здесь инверсия.Ответить

  • наш код не будет вызывать что-то, пусть что-то другое вызывает нас

    Думаю, это стоит вынести в первый абзац статьи :-) Коммунар (обс.) 12:34, 12 сентября 2018 (UTC)Ответить

Pavelpat 22:14, 15 марта 2015 (UTC) Уже несколько лет эта статья вносит путаницу в термин IoC.Ответить

  • Похоже, IoC может обойтись не только без DI, но и без ООП, как архитектурное решение. А где сейчас в статье определение через DI? Просто констатируется, что это - одна из распространенных реализаций, на что и источник легко находится. РоманСузи 05:27, 16 марта 2015 (UTC)Ответить

Реализации править

Необходимо как-то определиться, сколько их там будет, и на основании каких АИ. А так этот список может погибнуть при очередной чистке. РоманСузи 13:35, 31 декабря 2012 (UTC)Ответить