한 클래스에서 많은 기능을 제공하는 경우
- 각 기능마다 의존하는 대상이 다를 수 있음
- 한 기능 변경이 다른 기능에 영향을 줄 수 있음
- 예 : changePw
를 변경하는데 blockUser
를 변경 해야하는 경우
- 예 :regist
를 테스트하려면 blackUser
까지 초기화 해야하는 경우
그럴 때는 기능을 클래스로 분리 고려
클래스 갯수는 증가하지만, 각 클래스마다 필요로하는 의존이 줄어든다
한 기능을 수정할때 다른 기능 수정하지 않아도 된다.
개별 기능 테스트도 수월해진다.
조립기가 객체 생성, 의존 주입을 처리
- 예 : 스프링 프레임워크
객체를 생성 하고 의존대상 주입하는 코드를 설정으로 작성
설정 코드를 이용하여, ApplicationContext
라고 불리는 조립기 생성
결론 : DI를 습관처럼 사용하기