티스토리 뷰

CS

의존성 주입이란?

iDrogba 2023. 2. 5. 17:07

의존성이란?

  • 객체 지향 프로그래밍에서 Dependency, 의존성은 서로 다른 객체 사이에 의존 관계가 있다는 것을 말한다.
  • 즉, 서로 다른 두 객체가 독립적이지 못하고 서로 영향을 주는 관계를 의미한다.
    (ex. B 객체가 내부 메서드에서 A 객체의 변수를 참조)
  • 의존하는 객체가 수정되면, 다른 객체도 영향을 받는다.

주입이란?

  • 주입 이란 내부가 아닌 외부에서 객체를 생성해서 넣어주는 것을 주입한다고 표현한다. (ex. 생성자 활용)

그럼 의존성 주입은 뭘까?

  • DI, 의존성 주입은 필요한 객체를 직접 생성하는 것이 아닌 외부로부터 필요한 객체를 받아서 사용하는 것이다.
  • 이때 중요한 것은 의존 관계 역전 법칙을 지켜주는 것이다.
    이 법칙을 지켜주면 독립적인 객체 관계를 구성할 수 있고 아래와 같은 장점을 얻을 수 있다.
    • Unit Test가 용이해진다.
    • 코드의 재활용성을 높여준다.
    • 객체 간의 의존성(종속성)을 줄이거나 없앨 수 있다.
    • 객체 간의 결합도를 낮추면서 유연한 코드를 작성할 수 있다.

의존 관계 역전 법칙

  • 의존 관계 역전 법칙은 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존관계를 반전시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있는 구조를 말한다. 이 법칙은 다음 두 가지 특징이 있다.
    • 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다.
    • 추상화(ex. protocol)는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다.
  • 단순히 외부에서 의존성을 주입하는 것 만으로 의존성 주입이라고 부르지 않는다. 의존 관계 역전 법칙으로 의존 관계를 분리시켜 주어야 진정한 의존성 주입이고 비로소 서로 독립적인 객체 관계가 이루어진다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함