item 5 Jung inchul - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
Effective Java 3e μμ΄ν 5λ₯Ό μμ½ν λ΄μ© μ λλ€.
λ§μ ν΄λμ€κ° νλ μ΄μμ μμμ μμ‘΄νλ€. μ΄λ° ν΄λμ€λ₯Ό μ μ μ νΈλ¦¬ν° ν΄λμ€λ‘ ꡬνν λͺ¨μ΅μ λλ¬Όμ§ μκ² λ³Ό μ μλ€.
Q1. μ μ μ νΈλ¦¬ν° ν΄λμ€λ 무μμΌκΉ? κ·Έλ¦¬κ³ μ΄λ€κ² μμκΉ?
public class SpellChecker {
privte static final Lexion dictionary = ...;
private SpellChecker() {} // κ°μ²΄ μμ± λ°©μ§
public static SpellChecher INSTANCE = new SpellChecker(...);
public boolean isValid(String word) { ... }
public List<String> suggertions(String type) {...}
}
μμ μ½λλ μ¬μ μ λ¨ νλλ§ μ¬μ©νλ€κ³ κ°μ νλ€λ μ μμ 그리 νλ₯ν΄ λ³΄μ΄μ§ μλλ€. μ€μ μμλ μ¬μ μ΄ μΈμ΄λ³λ‘ λ°λ‘ μκ³ νΉμ μ΄νμ© μ¬μ μ λ³λλ‘ λκΈ°λ νλ€.
νλμμ final νμ μλ₯Ό μ κ±°νκ³ λ€λ₯Έ μ¬μ μΌλ‘ κ΅μ²΄νλ λ©μλλ₯Ό μΆκ°ν μ μμ§λ§, μμ½κ²λ μ΄ λ°©μμ μ΄μνκ³ μ€λ₯λ₯Ό λ΄κΈ° μ¬μ°λ©° λ©ν°μ€λ λ νκ²½μμλ μΈ μ μλ€. μ¬μ©νλ μμμ λ°λΌ λμμ΄ λ¬λΌμ§λ ν΄λμ€μλ μ μ μ νΈλ¦¬ν° ν΄λμ€λ μ±κΈν΄ λ°©μμ΄ μ ν©νμ§ μλ€.
μ΄ μ‘°κ±΄μ λ§μ‘±νλ κ°λ¨ν ν¨ν΄μ΄ μμΌλ, λ°λ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν λ μμ±μμ νμν μμμ λ겨주λ λ°©μμ΄λ€.
public class SpellChecker {
privte static final Lexion dictionary = ...;
public SpellChecker(Lexion dictionary) {
this.dictionary = Objects.requireNonNull(dictionar);
}
public boolean isValid(String word) { ... }
public List<String> suggertions(String type) {...}
}
λΆλ³μ 보μ₯νμ¬ (κ°μ μμμ μ¬μ©νλ €λ) μ¬λ¬ ν΄λΌμ΄μΈνΈκ° μμ‘΄ κ°μ²΄λ€μ μμ¬νκ³ κ³΅μ ν μ μκΈ°λ νλ€. μμ‘΄ κ°μ²΄ μ£Όμ μ μμ±μ, μ μ ν©ν°λ¦¬, λΉλ ν¨ν΄ λͺ¨λμ λκ°μ΄ μμ©ν μ μλ€.
μ΄ ν¨ν΄μ μΈλ§ν λ³νμΌλ‘ μμ±μμ μμ ν©ν°λ¦¬λ₯Ό λ겨주λ λ°©μμ΄ μλ€. ν©ν°λ¦¬λ νΈμΆν λλ§λ€ νΉμ νμ μ μΈμ€ν΄μ€λ₯Ό λ°λ³΅ν΄μ λ§λ€μ΄μ£Όλ κ°μ²΄λ₯Ό λ§νλ€.
μ΄ λ°©μμ μ¬μ©ν΄ ν΄λΌμ΄μΈνΈλ μμ μ΄ λͺ μν νμ μ νμ νμ μ΄λΌλ©΄ 무μμ΄λ μμ±ν μ μλ ν©ν°λ¦¬λ₯Ό λκΈΈ μ μλ€.
μμ‘΄ κ°μ²΄ μ£Όμ μ΄ μ μ°μ±κ³Ό ν μ€νΈ μ©μ΄μ±μ κ°μ ν΄μ£ΌκΈ΄ νμ§λ§, μμ‘΄μ±μ΄ μμ² κ°λ λλ ν° νλ‘μ νΈμμλ μ½λλ₯Ό μ΄μ§λ½κ² λ§λ€κΈ°λ νλ€.
νλ μμν¬ νμ©λ²μ μ΄ μ± μμ λ€λ£° μ£Όμ λ μλμ§λ§, μ΄λ€ νλ μμν¬λ μμ‘΄ κ°μ²΄λ₯Ό μ§μ μ£Όμ νλλ‘ μ€κ³λ APIλ₯Ό μλ§κ² μμ©ν΄ μ¬μ©νκ³ μμμ μΈκΈν΄λλ€.
ν΄λμ€κ° λ΄λΆμ μΌλ‘ νλ μ΄μμ μμμ μμ‘΄νκ³ , κ·Έ μμμ΄ ν΄λμ€ λμμ μν₯μ μ€λ€λ©΄ μ±κΈν΄κ³Ό μ μ μ νΈλ¦¬ν° ν΄λμ€λ μ¬μ©νμ§ μλ κ²μ΄ μ’λ€. μ΄ μμλ€μ ν΄λμ€κ° μ§μ λ§λ€κ² ν΄μλ μλλ€.