용어 | DI, 의존성 주입 : 디펜던시 인젝션

|

요약

DI(의존관계 주입 : Dependencty Injection)은
표준을 정의할 수 있고 이를 바탕으로 일관된 설계를 할 수 있게 합니다.

“A가 B를 의존한다” (토비의 스프링 3.1 p.113)
B가 변하면 A에게도 영향이 끼친다. 라는 말이 됩니다.

햄버거 가게 요리사는 짜장면 레시피에 의존합니다
햄버거 레시피가 변경하면 요리사는 햄버거 만드는 법을 수정해야 합니다.
레시피 변화가 요리사의 행위에 영향을 미쳤기 때문에
요리사는 레시피에 의존한다. 라고 말할 수 있습니다.

예제는 C#으로 이루어집니다.

class BurgerChef {
    private HamBurgerRecipe hamBurgerRecipe;

    public BurgerChef() {
        hamBurgerRecipe = new HamBurgerRecipe();        
    }
}

DI 활용

class BurgerChef {
    private BurgerRecipe burgerRecipe;

    public BurgerChef(BurgerRecipe burgerRecipe) {
        this.burgerRecipe = burgerRecipe;
    }
}

class BurgerRestaurantOwner {
    private BurgerChef burgerChef = new BurgerChef(new HamburgerRecipe());

    public void changeMenu() {
        burgerChef = new BurgerChef(new CheeseBurgerRecipe());
    }
}

의존성 장점

  • 재사용성을 높여줍니다.
  • 코드를 단순하게 만듭니다.
  • 테스트에 용이합니다.
  • 종속적인 코드의 수가 줄어듭니다
  • 왜 사용하는지 파악하기 쉬워 가독성이 좋아집니다
  • 객체간의 의존관계를 설정할 수 있습니다.

높은 의존성의 단점

  • 독립적이지 않습니다. 다른곳에 사용하기 어렵습니다.

참조

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

클릭하여 복사