스터디/이펙티브 자바
[Effective Java] Item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용
niniz
2022. 5. 14. 10:13
의존 객체 주입 패턴
public SpellChecker {
private static final Lexicon dictionary = new NaverLexicon();
}
이런 맞춤법 검사기가 있는 경우 DaumLexicon을 사용하거나 특수한 어휘사전을 사용할 수 없습니다.
public SpellChecker {
private static final Lexicon dictionary;
public SpeelChecker(Lexicon dictionary) {
dictionary = Objects.requireNonNull(dictionary);
}
}
위의 코드와 같이 생성자에 필요한 자원을 넘겨주는 방식을 사용하면 클리아이언트가 원하는 어휘사전을 사용할 수 있습니다.
이런 의존 객체 주입 패턴은 생성자뿐 아니라 정적 팩토리 메서드, 빌더패턴에도 똑같이 적용할 수 있습니다.
장점
클래스의 유연성, 재사용성, 테스트 용이성 개선
결론
클래스가 내부적으로 하나 이상의 자원에 의존
하고, 그 자원이 클래스 동작에 영향을 준다면 의존 객체 주입 패턴을 제일 먼저 고려하는 것이 좋습니다.
반응형