728x90
반응형
abstract class Lexicon { ... }
class EnglishLexicon extends Lexicon { ... }
class KoreanLexicon extends Lexicon { ... }
class SpellChecker {
private Lexicon dictionary;
public SpellChecker(Supplier<? extends Lexicon> supplier){
this.dictionary = supplier.get();
}
public static boolean isValid(String word){ ... }
}
SpellChecker
에서 dictionary 변수를 생성자를 통해서 외부에서 주입받고록 작업이 되어있다.- 이는 필요한 자원을 생성자에 넘겨주어 클래스의 유연성과 재사용성을 개선해준다.
참고 자료
Joshua Bloch, 『Effective Java 3/E』, 개앞맵시 옮김, 프로그래밍인사이트(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=
728x90
반응형
'Java' 카테고리의 다른 글
[Effective Java] 아이템 9. try-finally보다는 try-with-resources를 사용하라. (0) | 2022.05.24 |
---|---|
[Effective Java] 아이템 7. 다 쓴 객체 참조를 해제하라. (0) | 2022.05.24 |
[Effective Java] 아이템 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라. (0) | 2022.05.24 |
[Effective Java] 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라. (0) | 2022.05.24 |
[Effective Java] 아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라. (0) | 2022.05.24 |