요약

[SOLID] 의존 관계 역전 규칙(DIP), 의존성 주입(DI), 제어의 역전(IoC)

DIP

상위 모듈의 하위 모듈 의존성은 확장성 및 재사용성 측면에서 개선되어야 한다.

graph LR
  Programmer -.-> Americano
class Programmer {
  private Americano _americano;
  
  public Programmer() {
    _americano = new Americano();
  }
  
  public void drink() {
    _americano.drink();
  }
}

class Americano {
  public void drink() {
    System.out.println("Drink Americano");
  }
}

DI

DI를 적용할 때, DIP 원칙을 준수하게 된다.

graph LR
  Programmer -.-> Coffee
	Americano --> Coffee
class Programmer {
  private Coffee _coffee;
  
  public Programmer(Coffee coffee) {
    _coffee = coffee;
  }
  
  public void drink() {
    _coffee.drink();
  }
}
interface Coffee {
  public void drink();
}

class Americano implements Coffee {
  @Override
  public void drink() { 
    System.out.println("Drink Americano");
  }
}
Programmer sleepyProgrammer = new Programmer(new Americano())
sleepyProgrammer.drink();

IoC

Untitled

관심사를 분리하고, 클라이언트에게 제한적인 인터페이스를 제공하여 손쉬운 사용이 가능하도록

내용