item 5 leekyunghee - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
- μΈμ€ν΄μ€λ₯Ό μμ±ν λ μμ±μμ νμν μμμ λ겨주λ λ°©μμ΄λ€.
- μμ‘΄ κ°μ²΄ μ£Όμ μ ν ννλ‘ λ§μΆ€λ² κ²μ¬κΈ°(μμ)λ₯Ό μμ±ν λ κ°μ²΄μΈ μ¬μ μ μ£Όμ ν΄μ£Όλ©΄ λλ€.
public class SpellChecker {
private final Lexicon dictionary;
public SpellChecker(Lexicon dictionary) {
this.dictionary = Objects.requireNonNull(dictionary);
}
public boolean isValid(String word) { ... }
public List<String> suggestings (String typo) { ... }
}
μμμμλ dictionaryλΌλ λ± νλμ μμλ§ μ¬μ©νμ§λ§ μμμ΄ λͺκ°λ μμ‘΄ κ΄κ³κ° μ΄λ»λ μκ΄μμ΄ μ μλνλ€.
λΆλ³(μμ΄ν 17)μ 보μ₯νμ¬ (κ°μ μμμ μ¬μ©νλ €λ) μ¬λ¬ ν΄λΌμ΄μΈνΈκ° μμ‘΄ κ°μ²΄λ€μ μμ¬νκ³ κ³΅μ ν μ μκΈ°λ νλ€.
- μμ‘΄ κ°μ²΄ μ£Όμ μ μμ±μ, μ μ ν©ν 리, λΉλ λͺ¨λμ λκ°μ΄ μμ©ν μ μλ€.
- μμ±μμ μμ ν©ν 리λ₯Ό λ겨주λ λ°©μ
- ν©ν 리λ νΈμΆν λλ§λ€ νΉμ νμ μ μΈμ€ν΄μ€λ₯Ό λ°λ³΅ν΄μ λ§λ€μ΄μ£Όλ κ°μ²΄ λ₯Ό λ§νλ€.
- μλ° 8μμ μκ°ν
Supplier<T>
μΈν°νμ΄μ€κ° ν©ν 리λ₯Ό ννν μλ²½ν μμμ΄λ€.
public class SpellChecker {
private static final Lexicon dictionary = ...;
private SpellChecker() {} // κ°μ²΄ μμ± λ°©μ§
public static boolean isValid(String word) { ... }
public static List<String> suggestings (String typo) { ... }
}
public class SpellChecker {
private final Lexicon dictionary = ...;
private SpellChecker(...) {}
private static SpellChecker INSTANCE = new SpellChecker(...);
public boolean isValid(String word) { ... }
public List<String> suggetions(String type) { ... }
}
- dictionaryλ₯Ό λ¨ νλλ§ μ¬μ©νλ€κ³ κ°μ νλ€λ μ
- μ¬μ νλλ‘ μ΄ λͺ¨λ μ°μμ λμν μ μκ² νλ€λ μ
- μ¬μ©νλ μμμ λ°λΌ λμμ΄ λ¬λΌμ§λ ν΄λμ€μλ μ μ μ νΈλ¦¬ν° ν΄λμ€λ μ±κΈν΄ λ°©μμ΄ μ ν©νμ§ μλ€.
ν΅μ¬ μ 리
ν΄λμ€κ° λ΄λΆμ μΌλ‘ νλ μ΄μμ μμμ μμ‘΄νκ³ , κ·Έ μμμ΄ ν΄λμ€ λμμ μν₯μ μ€λ€λ©΄
μ±κΈν΄κ³Ό μ μ μ νΈλ¦¬ν° ν΄λμ€λ μ¬μ©νμ§ μλκ² μ’λ€. μ΄ μμμ ν΄λμ€κ° μ§μ λ§λ€κ² ν΄μλ μλλ€.
νμν μμμ (νΉμ κ·Έ μμμ λ§λ€μ΄μ£Όλ ν©ν 리λ₯Ό) μμ±μμ (νΉμ μ μ ν©ν 리λ λΉλμ) λ겨주μ.