이펙티브 자바 책을 읽으면서 새로 알게 된 부분을 기록한 것입니다.
자원을 직접 명시하지 말고 의존 객체 주입을 사용하라
사용하는 자원에 따라 동작이 달라지는 클래스에는 정적 유틸리티 클래스나 싱글턴 방식이 적합하지 않다
- 대신 클래스가 여러 자원 인스턴스를 지원해야 하며, 클라이언트가 원하는 자원을 사용해야 한다.
-
이 자원들을 클래스가 직접 만들게 해서도 안 된다. 이 방법을 적용하려면 인스턴스를 생성할 때 생성자에 필요한 자원을 넘겨주면 된다. = 의존 객체 주입
- 필요한 자원 또는 그 자원을 만들어주는 팩토리를 생성자 또는 정적 팩토리나 빌더에 넘겨주어야 한다.
- 의존 객체 주입은 생성자, 정적 팩토리, 빌더 모두에 똑같이 응용할 수 있다.
- 의존객체 주입은 클래스의 유연성, 재사용성, 테스트 용이성을 개선해준다.
주의점
- 의존 객체 주입은 의존성이 수 천개 되는 큰 프로젝트에서 코드를 어지럽게 만들기도 한다.
- 스프링 같은 의존 객체 주입 프레임워크를 사용하면 이런 어질러짐을 해소할 수 있다.