
의존성
- 의존성 : 의존하는 대상의 변경에 영향을 받을 수 있는 가능성
- 어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때 두 객체 사이에 의존성이 존재
- 의존성은 실행 시점과 구현 시점에 서로 다른 의미를 갖는다
- 실행 시점 : 의존하는 객체가 정상적으로 동작하려면 실행 시에 의존 대상 객체가 반드시 존재
- 구현 시점 : 의존 대상 객체가 변경될 경우 의존하는 객체도 함께 변경
- 의존성은 방향성을 가지며 단방향
의존성 전이
- 직접 의존성 : 한 요소가 다른 요소에 직접 의존하는 경우
- 간접 의존성 : 직접적인 관계는 존재하지 않지만 의존성 전이에 의해 영향이 전파되는 경우
- 런타임 의존성 : 애플리케이션이 실행되는 시점
- 컴파일 타임 의존성 : 작성한 코드의 구조
- 런타임 의존성이 다루는 주제는 객체 사이의 의존성, 컴파일타임 의존성이 다루는 주제는 클래스 사이의 의존성
의존성 해결
- 컴파일타임 의존성은 구체적인 런타임 의존성으로 대체
- 의존성 해결 : 컴파일타임 의존성을 실행 컨텍승트에 맞는 적절한 런타임 의존성으로 교체하는 것
- 객체를 생성하는 시점에 생성자를 통해 의존성 해결
- 객체 생성 후 setter 메서드를 통해 의존성 해결
- 매서드 실행 시 인자를 이용해 의존성 해결
추상화에 의존하라
- 추상화란 어떤 양상, 세부사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법
- 구체 클래스 의존성 > 추상 클래스 의존성 > 인터페이스 의존성 순서
- 의존하는 대상이 더 추상적일수록 결합도는 더 낮아진다
이번단원의 결론은 의존성은 결합도와 관련이 있고 추상화에 의존하라는 것, 다양한 관점을 통해 핵심적인 개념을 계속 반복해서 설명하는 느낌이다.
'IT자료실 > 기술서적' 카테고리의 다른 글
오브젝트 - 기술서적 스터디 10단원-상속과 코드의 재사용 (0) | 2023.08.24 |
---|---|
오브젝트 - 기술서적 스터디 9단원-유연한 설계 (0) | 2023.08.24 |
오브젝트 - 기술서적 스터디 7단원-메시지와 인터페이스 (0) | 2023.07.24 |
오브젝트 - 기술서적 스터디 6단원-메시지와 인터페이스 (0) | 2023.07.24 |
오브젝트 - 기술서적 스터디 5단원-설계품질 트레이드 오프 (0) | 2023.07.11 |