디커플링 은 많은 분야에 적용 할 수있는 매우 일반적인 원칙입니다. 종속성 반전 은 시스템의 상위 레벨을 라이브러리로 분리하고 인터페이스를 사용하여 하위 레벨에서 분리하는 특정 형태의 분리입니다. 이를 통해 주요 재 작업없이 시스템의 하위 레벨 부품을 교체 할 수 있습니다.
예를 들어 시스템의 상위 레벨 부분이 하위 레벨 클래스의 구체적인 인스턴스를 생성하는 대신 IoC 컨테이너를 사용하여 객체 생성 방법을 분리 할 수 있습니다.
Inversion of control 은 프레임 워크가 응용 프로그램에서 일부 제어 권한을 다시 얻을 수 있도록하는 프레임 워크 라이브러리에서 사용하는 디자인 원칙입니다. 즉, 윈도우 프레임 워크는 특정 사용자 인터페이스 이벤트가 발생할 때 애플리케이션 코드를 다시 호출 할 수 있습니다. Martin Fowler는 Do n't call us, we 'll call you 에서와 같이 Hollywood Principle 이라는 용어를 사용합니다 . 디커플링은 제어 반전의 중요한 부분입니다.
그러나 IoC 컨테이너 는 제어 반전과 어떤 관련이 있습니까? Martin Fowler를 인용하려면 :
Inversion of Control은 너무 일반적인 용어이므로 사람들은 혼란스러워합니다. 다양한 IoC 옹호자들과 많은 논의를 통해 우리는 Dependency Injection이라는 이름을 정했습니다.
(Martin Fowler가 종속성 반전이 아니라 종속성 주입 에 대해 이야기 합니다.)
IoC 컨테이너는 종속성 주입을 구현하는 데 도움이되며 더 나은 용어는 종속성 주입 컨테이너입니다. 그러나 IoC 컨테이너 이름은 고정 된 것 같습니다. 종속성 주입은 종속성 반전에서 중요한 구성 요소이지만 IoC 컨테이너를 종속성 주입에 사용하면 제어 반전이 더 광범위하고 일반적인 원칙이므로 혼란 스러울 수 있습니다.
이름 지정이 매우 일관 적이지는 않지만 이러한 용어가 겹치더라도 독립적으로 발명되고 사용 되었기 때문에 큰 놀라움은 아닙니다.