-AB

сностатья написана Мартином Фаулероминверсия управления - это принцип, при котором поток управления программы инвертируется: вместо программиста, управляющего потоком программы, внешние источники (инфраструктура, службы, другие компоненты) контролируют его. Как будто мы подключаем что-то к чему-то другому. Он привел пример с EJB 2.0:

Например, интерфейс Session Bean определяет ejbRemove, ejbPassivate (сохраняется во вторичном хранилище) и ejbActivate (восстанавливается из пассивного состояния). Вы не можете контролировать, когда эти методы вызываются, только то, что они делают. Контейнер звонит нам, мы не называем это.

Это приводит к разнице между фреймворком и библиотекой:

Инверсия управления - это ключевая часть того, что отличает фреймворк от библиотеки. Библиотека - это, по сути, набор функций, которые вы можете вызывать, в наши дни обычно организованные в классы. Каждый вызов выполняет некоторую работу и возвращает управление клиенту.

Я думаю, точка зрения, что DI - это IOC, означает, что зависимость объекта инвертирована: вместо этого он управляет своими собственными зависимостями, жизненным циклом ... что-то другое делает это за вас. Но, как вы рассказали мне о DI руками, DI не обязательно является МОК. У нас все еще может быть DI и нет МОК.

Однако в этой статье (из pococapsule, другой IOC Framework для C / C ++) предполагается, что из-за IOC и DI контейнеры IOC и структуры DI намного превосходят J2EE, поскольку J2EE смешивает код инфраструктуры с компонентами. таким образом, не делая его простым старым объектом Java / C ++ (POJO / POCO).

Инверсия управляющих контейнеров, отличных от шаблона внедрения зависимостей (Архивная ссылка)

Дополнительное чтение, чтобы понять, в чем проблема со старой платформой разработки на основе компонентов, что приводит ко второй статье выше:Почему и что из инверсии контроля (Архивная ссылка)

Мой вопросЧто такое МОК и ДИ? Я смущен. Основанный на pococapsule, IOC является чем-то более значительным, чем просто инвертирование контроля между объектами или программистами и средами.

Ответы на вопрос(18)

Ваш ответ на вопрос