기능 구현을 위해 다른 구성 요소를 사용하는 것
(객체 생성, 메서드 호출, 데이터 사용)
의존은 변경이 전파될 가능성을 의미한다.
의존하는 대상이 바뀌면 바뀔 가능성이 높아짐!
(호출하는 메서드의 파라미터 변경)
그래서 순환의존은 위험하다.
a -> b 의존 b -> c 의존 c -> a 의존
서로 변경의 여파가 전파될 확률이 높아진다.
의존하는 대상이 많을떄는 언제?
기능이 많은 경우
- 한 클래스에서 많은 기능을 제공하는 경우
각 기능마다 의존하는 대상이 다를 수 있고 한 기능변경이 다른 기능에 영향을 줄 수 있다.
-> 테스트 하기도 어려워진다.
의존 대상 객체를 직접 생성하면?
생성 클래스가 바뀌면 의존하는 코드도 바뀜
의존 주입
외부에서 의존 객체를 생성자나 메서드를 통해 주입
조립기가 객체를 생성하고 의존 주입을 처리합니다.(대표적인 경우가 스프링 프레임워크)
의존주입의 장점