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);
}
}
위의 코드와 같이 생성자에 필요한 자원을 넘겨주는 방식을 사용하면 클리아이언트가 원하는 어휘사전을 사용할 수 있습니다.
이런 의존 객체 주입 패턴은 생성자뿐 아니라 정적 팩토리 메서드, 빌더패턴에도 똑같이 적용할 수 있습니다.
장점
클래스의 유연성, 재사용성, 테스트 용이성 개선
결론
클래스가 내부적으로 하나 이상의 자원에 의존
하고, 그 자원이 클래스 동작에 영향을 준다면 의존 객체 주입 패턴을 제일 먼저 고려하는 것이 좋습니다.
반응형
'스터디 > 이펙티브 자바' 카테고리의 다른 글
[Effective Java] Item 7. 다 쓴 객체를 참조 해제하라. (0) | 2022.05.15 |
---|---|
[Effective Java] Item 6. 불필요한 객체 생성을 피하라 (0) | 2022.05.15 |
[Effective Java] Item 4. 인스턴스화를 막으려면 private 생성자를 사용 (0) | 2022.05.14 |
[Effective Java] Item 3. private 생성자나 Enum타입으로 싱글턴임을 보증하라 (3) | 2022.05.13 |
[Effective Java] Item 2. 생성자에 매개변수가 많다면 빌더 (0) | 2022.05.11 |