의존성 주입과 제어의 역전
Aug 1, 2023
»
oop
의존성 주입(DI, Dependency Injection)
의존성 주입(이하 DI)은 클래스 내부에서 다른 클래스의 인스턴스를 직접 생성하는 대신 외부에서 생성된 인스턴스를 전달받아 사용하는 방식을 말한다. 이러한 방식을 사용하면 클래스 간의 결합도를 낮출 수 있고, 유연한 코드를 작성할 수 있다.
class Car {
private Engine engine;
public Car() {
this.engine = new Engine();
}
}
위와 같이 Car 클래스 내부에서 Engine 클래스의 인스턴스를 직접 생성하는 경우, Car 클래스는 Engine 클래스에 의존하게 된다. 이러한 경우, Car 클래스의 생성자에서 Engine 클래스의 인스턴스를 전달받아 사용하도록 수정하면 된다.
class Car {
private Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
}
제어의 역전(IoC, Inversion of Control)
제어의 역전(이하 IoC)은 프로그램의 실행 흐름을 개발자가 아닌 프레임워크나 컨테이너가 제어하는 것을 말한다. 위에서 살펴본 DI는 IoC를 구현하는 방법 중 하나이다.
일반적으로 웹 프레임워크를 사용할 때 개발자는 요청을 처리하기 위한 핸들러를 작성하고, 요청이 들어오면 프레임워크가 핸들러를 호출하도록 구현되어 있다. 이때 프레임워크가 개발자가 작성한 핸들러를 호출하는 것도 IoC의 한 예시라고 볼 수 있다.