공부

[TIL] 250111 Dependency Injection 개념 공부

때려쳐아니때려치지마 2025. 2. 4. 15:12

Dependency Injection

: 객체 간의 의존성 관리, 필요한 의존성을 외부에서 주입 받도록 설계하는 방법

 

의존성

: 객체가 자신의 기능을 수행하기 위해 필요한 다른 객체나 구성요소

객체의 기능을 코드의 직접 수정으로 재변경해 줘야 하는 경우 코드에 의존적이게 된다

다양한 케이스로 변경할 수 있는 객체의 기능을 코드로 일일이 적용시켜주는게(객체가 스스로 생성) 아니라,
외부에서 주입받을 때 객체간의 의존성을 관리하기 편하다.


[예시]

//객체의 기능을 객체가 구현하여 수정에 용이하지 않은 예시
public class Car {
    private Engine engine;

    public Car() {
        // Car 클래스가 Engine 객체를 직접 생성
        engine = new Engine();
    }
}

//객체의 기능을 외부에서 주입받아 객체 결합도가 낮아진 예
public class Car {
    private Engine engine;

    // 의존성을 외부에서 주입받음
    public Car(Engine engine) {
        this.engine = engine;
    }
}

[결론]

DI 패턴은 객체가 여러 기능을 할 때에 의존적이지 않게 기능을 부여받기 위함이기 때문에

변동적으로 다양한 기능을 수행해야하는 상황에서 쓰이면 좋은 패턴이다!