study
[Java] μμ΄ν 5 μμμ μ§μ λͺ μνμ§ λ§κ³ μμ‘΄ κ°μ²΄ μ£Όμ μ μ¬μ©νλΌ
ν΄λμ€κ° λ΄λΆμ μΌλ‘ νλ μ΄μμ μμμ μμ‘΄νκ³ , κ·Έ μμμ΄ ν΄λμ€ λμμ μν₯μ μ€λ€λ©΄ μ±κΈν΄(Singleton) κ³Ό, μ μ μ νΈλ¦¬ν°(static util class)λ μ¬μ©νμ§ μλ κ²μ΄ μ’λ€.
// μ μ μ νΈλ¦¬ν°λ₯Ό μλͺ» μ¬μ©ν μ - μ μ°νμ§ μκ³ ν
μ€νΈνκΈ° μ΄λ ΅λ€
public class SpellChecker{
private static final Lexicon dictionary = ...; // μ¬μ μ μμ‘΄
private SpellChecker() {} // κ°μ²΄ μμ± λ°©μ§
public static boolean isValid(String word){...}
public static List<String> suggestions(String typo){...}
}
// μ±κΈν΄μ μλͺ» μ¬μ©ν μ - μ μ°νμ§ μκ³ ν
μ€νΈνκΈ° μ΄λ ΅λ€
public class SpellChecker{
private static final Lexicon dictionary = ...; // μ¬μ μ μμ‘΄
private SpellChecker(...) {}
public static SpellChecker INSTANCE = new SpellChecker(...);
public static boolean isValid(String word){...}
public static List<String> suggestions(String typo){...}
}
- SpellChecker ν΄λμ€λ dictionary(μμ)μ μμ‘΄νκ³ μλ€
- κ·Έλ°λ°, μΈμ΄λ³ μ¬μ , νΉμ μ΄νμ© μ¬μ μ΄ νμνκ² λλ©΄ ν΄λμ€ λ΄λΆ λ©μλ λμμ΄ λ¬λΌμ ΈμΌ νλ€.
- μ μ μ νΈλ¦¬ν° ν΄λμ€λ μ±κΈν΄ λ°©μμ μ ν©νμ§ μλ€.
μλνλ©΄, μ μ°νμ§ μκ³ , ν μ€νΈ νκΈ° μ΄λ ΅κΈ° λλ¬Έμ΄λ€.
- SpellCheckerκ° μ¬λ¬ μ¬μ μ μ¬μ©ν μ μλλ‘ λ§λ€κΈ° μν΄ dictionary νλμμ final νμ μλ₯Ό μ κ±°νκ³ λ€λ₯Έ μ¬μ μΌλ‘ κ΅μ²΄νλ λ©μλλ₯Ό μΆκ°ν μλ μλ€.
- κ·Έλ¬λ μ΄ λ°©λ²μ μ΄μνλ©°, μ€λ₯λ₯Ό λ΄κΈ° μ½λ€. λν λ©ν°μ€λ λ νκ²½μμλ μΈ μ μλ€.
ν΄λμ€κ° μ¬λ¬ μμ μΈμ€ν΄μ€λ₯Ό μ§μν΄μΌνκ³ , ν΄λΌμ΄μΈνΈκ° μνλ μμμ μ¬μ©νκ² νλ λ°©λ²μ μ¬μ©ν΄μΌ νλ€. μΈμ€ν΄μ€λ₯Ό μμ±ν λ μμ±μμ νμν μμμ λ겨주μ.
- μμ‘΄ κ°μ²΄ μ£Όμ λ°©μ μ΄λΌκ³ νλ€.
// μμ‘΄ κ°μ²΄ μ£Όμ
μ μ μ°μ±κ³Ό ν
μ€νΈ μ©μ΄μ±μ λμ¬μ€λ€
public class SpellChecker{
private final Lexicon dictionary;
public SpellChecker(Lexicon dictionary){
this.dictionay = Objects.requiredNonNull(dictionay);
}
public boolean isValid(String word){...}
public List<String> suggestions(String typo){...}
}
- ν΄λμ€μ μ μ°μ±, μ¬μ¬μ©μ±, ν μ€νΈ μ©μ΄μ±μ κ°μ ν΄μ€λ€.
- λΆλ³μ 보μ₯ν΄ ν΄λΉ μμμ μ¬μ©νλ €λ μ¬λ¬ ν΄λΌμ΄μΈνΈκ° μμ‘΄ κ°μ²΄λ€μ μμ¬νκ³ κ³΅μ ν μ μλ€.
- μμ±μ, μ μ ν©ν°λ¦¬, λΉλ μμ΄ν μ μμ©ν μ μλ€.
μμ‘΄ κ°μ²΄ μ£Όμ μμ© : μμ±μμ μμ ν©ν°λ¦¬(Factory) λ₯Ό λ겨 μ£Όλ λ°©μ
- ν©ν°λ¦¬(Factory) : νΈμΆν λλ§λ€ νΉμ νμ μ μΈμ€ν΄μ€λ₯Ό λ°λ³΅ν΄μ λ§λ€μ΄μ£Όλ κ°μ²΄
- ν©ν°λ¦¬ λ©μλ ν¨ν΄ (Factory Method pattern) : μμ±μμ μμ ν©ν°λ¦¬λ₯Ό λ겨주λ λ°©μ
- μμ‘΄μ±μ΄ μμ²κ°κ° λλ ν° νλ‘μ νΈμμλ μμ‘΄ κ°μ²΄ μ£Όμ μ΄ μ½λλ₯Ό μ΄μ§λ½κ² λ§λ€κΈ°λ νλ€.
- λκ±°, μ£Όμ€, μ€νλ§ κ°μ μμ‘΄ κ°μ²΄ μ£Όμ νλ μμν¬λ₯Ό μ¬μ©νλ©΄ μ΄λ° μ΄μ§λ¬μ§μ ν΄μν μ μλ€.
ν΅μ¬ μ 리
- ν΄λμ€κ° λ΄λΆμ μΌλ‘ νλ μ΄μμ μμμ μμ‘΄νκ³ , κ·Έ μμμ΄ ν΄λμ€ λμμ μν₯μ μ€λ€λ©΄ μ±κΈν΄κ³Ό μ μ μ νΈλ¦¬ν° ν΄λμ€λ μ¬μ©νμ§ λ§μ.
- μ΄ μμλ€μ ν΄λμ€κ° μ§μ λ§λ€κ² ν΄μλ μλλ€.
- νμν μμμ (νΉμ κ·Έ μμμ λ§λ€μ΄μ£Όλ ν©ν°λ¦¬λ₯Ό) μμ±μμ (νΉμ μ μ ν©ν°λ¦¬λ λΉλμ) λ겨주μ. μμ‘΄ κ°μ²΄ μ£Όμ μ΄λΌ νλ μ΄ κΈ°λ²μ ν΄λμ€μ μ μ°μ±, μ¬μ¬μ©μ±, ν μ€νΈ μ©μ΄μ±μ κΈ°λ§νκ² κ°μ ν΄μ€λ€.
'study' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Kotlin youtube μμ½μΈλ―ν κ°μλ¬Έ (0) | 2022.07.16 |
---|---|
@Transactional(readOnly=true) (0) | 2022.03.16 |
[spring boot] mock test (2) | 2021.04.18 |
[spring boot] swagger μ μ© (0) | 2021.04.06 |