public class SpellChecker {
private static final Lexicon dictionary = ...;
private SpellChecker() {} //객체 생성 방지
}
//싱글턴
public class SpellChecker{
private final Lexicon dictionary = ...;
private SpellChecker(...){}
public static SpellChecker INSTANCE = new SpellChecker(...);
}
//의존 객체 주입 형태
public class SpellChecker{
private final Lexicon dictionary;
public SpellChecker(Lexicon dictionary){
this.dictionary = Objects.requireNonNull(dictionary);
}
}
- 팩터리 메소드 패턴(Factory Method Pattern)을 구현한 것이다.
Supplier<T>
인터페이스가 예시
- 위 인터페이스로 입력 받는 메서드는 일반적으로 한정적 와일드 카드(Bounded Wildcard Type)을 사용해 팩터리 타입 매개변수를 제한해야 한다.
Mosaic create(Supplier<? extends Tile> tileFactory){...}
Reference: