1. IoC 소개
IoC(Inversion of Control), 제어의 역전소프트웨어 설계**에서의 프로그래밍 원칙으로, 프레임워크에서 정의된 **제어의 흐름(flow of Control)**을 사용, 프레임워크가 사용자 정의 코드를 필요에 따라 호출하여 사용하게 한다. 기존 절차적 프로그래밍 에서의 제어의 흐름과 비교하면 **제어가 역전**되었다.
1.1. 제어의 역전
기존 절차적 프로그래밍에서는 어떤 작업을 처리하기 위해 사용자 정의 코드에 제어의 흐름(선언과 반복 및 분기문, 함수와 재사용가능한 라이브러리 호출등의 절차)을 사용자가 직접 정의하던 방식과 비교해서 IoC 원칙에 따른 설계는 프레임워크가 작업을 수행하기 위해 프레임워크에 정의되어있는 제어의 흐름대로 프로그램을 수행, 필요에 따라 사용자 정의 코드 를 (마치, 재사용 라이브러리를 사용하듯)호출하게 된다. 즉, 제어의 흐름이 사용자에게서 프레임워크로 넘어가게 되었고 이를 제어의 역전이라고 말한다.
2. OOP에서의 IoC
객체 지향 프로그래밍에서 **IoC(Inversion of Control)**은 프로그래밍 원칙으로, 모든 객체들에 대한 제어를 제어만을 담당하는 특별한 객체가 하는 형태이다.
2.1. OOP의 제어(Control)
객체들에 대한 제어란, 간단히 말해, 객체들의 생성과 메소드 호출, 소멸등 과 같은 생명주기를 관리하는 것을 말한다.
2.2 DI(Dependency Injection)
DI(Dependency Injection), 의존성 주입은 객체 지향 프로그래밍에서의 IoC의 구현인 디자인 패턴이다. DI 패턴에서 모든 객체는 자신이 의존성을 가지는 다른 객체에 대한 참조를 외부 코드인 Injecter로 부터 주입 받는다. 객체는 자신이 의존성을 가지는 다른 객체들의 생명주기에 관여할 수 없다. 즉, 커스텀 클래스 내부에서는 다른 객체의 생성 및 초기화나 소멸 시기를 독립적으로 지정할 수가 없다.
관련 포스트 링크 : DI(Dependency Injection), 의존성 주입
댓글
댓글 쓰기