본문 바로가기
Study/computer science

DI와 DIP

by 오후 6시의 봄 2024. 1. 7.
 의존
  • A가 B에 의존한다 = B가 변하면 A에 영향을 미친다 = A → B
DI(Dependent Injection)
  • 의존성 주입을 하지 않으면 상, 하위 클래스가 의존하는 관계를 갖게 됨
  • DIP를 적용하게 되면 interface 등을 추가해서 상, 하위 클래스의 직접적인 의존성을 끊어줌
  • 인터페이스를 이용한 하위 모듈 추가가 용이해짐
DIP(Dependent Injection Principle)
  • 의존관계역전법칙
  • 상위모듈이 하위모듈에 의존해서는 안되고, 두 모듈이 전부 추상화에 의존해야 함
  • 추상화는 세부사항에 의존해서는 안되고, 세부사항이 추상화에 따라 달라져야 함
의존성 주입의 장단점
  • 장점
    • 모듈을 쉽게 교체할 수 있음
    • 단위 테스트, 마이그레이션이 쉬워짐
    • 의존성 방향이 일관되어 코드 추론이 쉬워짐
  • 단점
    • 클래스 수가 늘어나 복잡성이 증가됨
    • 종속성 주입은 컴파일 시가 아니고 런타임 때 일어나기 떄문에 컴파일시 오류를 찾기 어려움