thug_choonsik 춘식이 주특기: 삼촌들 용돈 뺏기

의존성 주입과 제어의 역전

» 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의 한 예시라고 볼 수 있다.