아이템5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라
2021-04-25 00:00:00
# Effective_Java
- 많은 클래스가 하나 이상의 자원에 의존한다. (적게 의존할수록 좋겠지만 현실의 프로그램은 그렇지 않다는 얘기인 것 같다.)
- 사용하는 자원에 따라 동작이 달라지는 클래스에는..
- 정적 유틸리티 클래스는 적합하지 않다.
- 싱글턴 방식도 적합하지 않다.
인스턴스를 생성할 때 생성자에 필요한 자원을 넘겨주는 방식
1 | import java.util.Objects; |
- 위의 예시에서 dictionary 객체를 생성자에서 의존성 주입을 했다는 것을 볼 수 있다.
- 생성자, 정적 팩터리, 빌더에 모두 똑같이 응용 가능하다.
- 더 응용한 방식으로 생성자에 자원 팩터리를 넘겨주는 방식이 있다. 팩터리 메서드 패턴 (너무 유명한 디자인 패턴!)
결론
- 물론 의존성 주입을 코드 상에서 직접 해주는 방법이 나쁜 것은 아니지만 너무 많은 의존성 주입이 필요하게 되면 코드가 복잡해진다.
- Dagger, Guice, Spring에서 프레임워크를 이용해 의존성 주입을 대신 맡기자
- 클래스의 유연성, 재사용성, 테스트 용이성을 많이 개선 해준다.