IT자료실/기술서적

오브젝트 - 기술서적 스터디 8단원-의존성 관리하기

Ramda 2023. 8. 8. 22:01

의존성

  • 의존성 : 의존하는 대상의 변경에 영향을 받을 수 있는 가능성
  • 어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때 두 객체 사이에 의존성이 존재
  • 의존성은 실행 시점과 구현 시점에 서로 다른 의미를 갖는다
    • 실행 시점 : 의존하는 객체가 정상적으로 동작하려면 실행 시에 의존 대상 객체가 반드시 존재
    • 구현 시점 : 의존 대상 객체가 변경될 경우 의존하는 객체도 함께 변경
  • 의존성은 방향성을 가지며 단방향

의존성 전이

  • 직접 의존성 : 한 요소가 다른 요소에 직접 의존하는 경우
  • 간접 의존성 : 직접적인 관계는 존재하지 않지만 의존성 전이에 의해 영향이 전파되는 경우
  • 런타임 의존성 : 애플리케이션이 실행되는 시점
  • 컴파일 타임 의존성 : 작성한 코드의 구조
  • 런타임 의존성이 다루는 주제는 객체 사이의 의존성, 컴파일타임 의존성이 다루는 주제는 클래스 사이의 의존성

의존성 해결

  • 컴파일타임 의존성은 구체적인 런타임 의존성으로 대체
  • 의존성 해결 : 컴파일타임 의존성을 실행 컨텍승트에 맞는 적절한 런타임 의존성으로 교체하는 것
    • 객체를 생성하는 시점에 생성자를 통해 의존성 해결
    • 객체 생성 후 setter 메서드를 통해 의존성 해결
    • 매서드 실행 시 인자를 이용해 의존성 해결

추상화에 의존하라

  • 추상화란 어떤 양상, 세부사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법
  • 구체 클래스 의존성 > 추상 클래스 의존성 > 인터페이스 의존성 순서
  • 의존하는 대상이 더 추상적일수록 결합도는 더 낮아진다

이번단원의 결론은 의존성은 결합도와 관련이 있고 추상화에 의존하라는 것, 다양한 관점을 통해 핵심적인 개념을 계속 반복해서 설명하는 느낌이다.