Роз'єднання є дуже загальним принципом, застосовним у багатьох сферах. Інверсія залежностей - це специфічна форма роз'єднання, коли ви відокремлюєте вищі рівні системи від нижчих, розділяючи їх на бібліотеки та використовуючи інтерфейси. Це дозволяє замінити деталі системи нижчого рівня без значних переробок.
Наприклад, замість частин системи вищого рівня, що створюють конкретні екземпляри класів нижчого рівня, контейнер IoC може бути використаний для розв’язки способу створення об’єктів.
Інверсія управління - це принцип проектування, що використовується бібліотеками фреймворку, які дозволяють фреймворку відновити певний контроль із програми. Тобто фреймворк вікна може повернутися до коду програми, коли відбуваються певні події інтерфейсу користувача. Мартін Фаулер використовує термін Голлівудський принцип, як у " Не дзвоніть нам, ми зателефонуємо вам . Роз'єднання є важливою частиною інверсії контролю.
Але яке відношення має контейнер IoC до інверсії управління? Процитувавши Мартіна Фаулера :
Інверсія контролю - занадто загальний термін, і тому люди вважають це заплутаним. В результаті багато обговорень з різними прихильниками IoC ми зупинились на назві Dependency Injection.
(Зверніть увагу, що Мартін Фаулер говорить про введення залежності , а не про інверсію залежності .)
Контейнер IoC допомагає реалізувати ін'єкцію залежностей, і, можливо, кращим терміном буде контейнер ін'єкції залежностей. Однак назва контейнера IoC, схоже, залишається. Інжекція залежності є важливим компонентом інверсії залежностей, але використання контейнерів IoC для ін'єкції залежностей може заплутати, оскільки інверсія контролю є більш широким і загальним принципом.
Ви зазначаєте, що найменування не дуже послідовне, але це не повинно бути великим сюрпризом, оскільки ці терміни були самостійно винайдені та використані, хоча вони перекриваються.