스터디/이펙티브 자바

[Effective Java] Item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용

📝 작성 : 2022.05.14  ⏱ 수정 : 
728x90

의존 객체 주입 패턴

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);
    }
} 

위의 코드와 같이 생성자에 필요한 자원을 넘겨주는 방식을 사용하면 클리아이언트가 원하는 어휘사전을 사용할 수 있습니다.
이런 의존 객체 주입 패턴은 생성자뿐 아니라 정적 팩토리 메서드, 빌더패턴에도 똑같이 적용할 수 있습니다.

장점

클래스의 유연성, 재사용성, 테스트 용이성 개선

결론

클래스가 내부적으로 하나 이상의 자원에 의존하고, 그 자원이 클래스 동작에 영향을 준다면 의존 객체 주입 패턴을 제일 먼저 고려하는 것이 좋습니다.

반응형