의존성 주입(DI)

sumi Yoo·2022년 10월 24일
0

의존관계란?

"A가 B를 의존한다." -> B가 변하면 A에 영향을 미치는 관계

방법1. 인터페이스로 추상화하기

의존관계를 인터페이스로 추상화하면 더 다양한 의존관계를 맺을 수 있고, 실제 구현 클래스와의 관계가 느슨해져 결합도가 낮아진다.

class BurgerChef {
    private BurgerRecipe burgerRecipe;

    public BurgerChef() {
        burgerRecipe = new HamBurgerRecipe();
        //burgerRecipe = new CheeseBurgerRecipe();
        //burgerRecipe = new ChickenBurgerRecipe();
    }
}

interface BugerRecipe {
    newBurger();
    // 이외의 다양한 메소드
} 

class HamBurgerRecipe implements BurgerRecipe {
    public Burger newBurger() {
        return new HamBerger();
    }
    // ...
}

의존성 주입(Dependency Injection)

생성자 또는 메서드 등을 통해 외부로부터 생성된 객체를 전달 받는 것

장점

  1. 의존성이 줄어든다.
    주입받는 대상이 변하더라도 그 구현 자체를 수정할 일이 없거나 줄어들게된다.

  2. 재사용성이 높아진다.
    다른 클래스에서 재사용할 수 있다.

  3. 테스트하기 좋다.
    분리해서 테스트를 진행할 수 있다.

  4. 유연성과 확장성 향상
    결합도가 낮아져 유연성과 확장성을 향상시킨다.

의존성 주입을 해주기 위해서는 의존성들을 일일이 넣어줘야 합니다.
만약 잘못 코드를 작성하면 의존성 관계가 복잡해질 수 있습니다.
그래서 보통 의존성 주입을 별도로 관리해주는 라이브러리나 프레임워크를 사용합니다.

제어의 역전(Inversion Of Control)

코드의 흐름을 제어하는 주체가 바뀌는 것

0개의 댓글

관련 채용 정보