import java.util.List;
public class SpellChecker {
private static final Lexicon dictionary = new Lexicon();
// private Lexicon lexicon;
private SpellChecker() {
} // 객체 생성 방지
public static boolean isValid(String word) {
return false;
}
public static List<String> suggestions(String typo) {
return null;
}
}
public class SpellChecker {
private final Lexicon dictionary;
public SpellChecker(Lexicon dictionary) {
this.dictionary = Objects.requireNonNull(dictionary);
}
public boolean isValid(String word) {
return false;
}
public List<String> suggestions(String typo) {
return null;
}
}
Supplier
인터페이스를 사용한다.public class Mosaic {
public Mosaic create(Supplier<? extends Tile> tileFactory) {
}
}
public class MathUtils {
private MathUtils() {} // 객체 생성 방지
public static int add(int a, int b) {
return a + b;
}
}
같이 상태를 가지지 않는 유틸리티 메서드는 허용된다.
다만!
public class SpellChecker {
private static final Lexicon dictionary = ...;
private SpellChecker() {} // 객체 생성 방지
public static boolean isValid(String word) { ... }
public static List<String> suggestions(String typo) { ... }
}
같이 Lexicon 이라는 외부 클래스에 의존하는 클래스는 절대 static
을 사용하지 말자.