DI(의존관계 주입 : Dependencty Injection)은
표준을 정의할 수 있고 이를 바탕으로 일관된 설계를 할 수 있게 합니다.
“A가 B를 의존한다” (토비의 스프링 3.1 p.113)
B가 변하면 A에게도 영향이 끼친다. 라는 말이 됩니다.
햄버거 가게 요리사는 짜장면 레시피에 의존합니다
햄버거 레시피가 변경하면 요리사는 햄버거 만드는 법을 수정해야 합니다.
레시피 변화가 요리사의 행위에 영향을 미쳤기 때문에
요리사는 레시피에 의존한다. 라고 말할 수 있습니다.
예제는 C#으로 이루어집니다.
class BurgerChef {
private HamBurgerRecipe hamBurgerRecipe;
public BurgerChef() {
hamBurgerRecipe = new HamBurgerRecipe();
}
}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());
}
}