μλ‘
μΌμ μ ν λΈλ‘κ·Έ κΈμ μ°Έκ³ νμ¬ ν©ν°λ¦¬ λ©μλ ν¨ν΄ κΈμ μ¬λ Έμλλ°..
μ¬μ€ λΉμμ λ΄κ° μ΄ν΄νκΈ°μλ κΈμ΄ μ΄λ €μμ ν΄λΉ ν¨ν΄μ λν νλ¦μ μ΄ν΄νκΈ° μ΄λ €μ λ€.
https://developyanggaeng.tistory.com/129
3. [μλ°/Java] ν©ν 리 λ©μλ ν¨ν΄(Factory Method Pattern) : 'κ°μ²΄'μ 'κ°μ²΄ μμ± ν΄λμ€' λΆλ¦¬νλ λμ
ν΄λΉ λ΄μ©μ μλ λΈλ‘κ·Έ ν¬μ€ν μ μ°Έμ‘°νμμ΅λλ€. https://memostack.tistory.com/61 Design Pattern - Factory Method Pattern (ν©ν 리 λ©μλ ν¨ν΄) Factory Method Pattern ν©ν 리 λ©μλ ν¨ν΄μ 'κ°μ²΄'μ 'κ°μ²΄ μμ± ν΄
developyanggaeng.tistory.com
μ§κΈ DBλ₯Ό λ°°μ°λ©΄μ ν΄λΉ κΈμ ꡬ쑰μ λν΄ μ‘°κΈμ΄λλ§ μ΄ν΄λ κ°μ§λ§!
μμ§ JDBCλ μν΄μ μλ²½ν μ΄ν΄νλ κ²μ μ¬μ ν μ΄λ ΅λ€.
κ·Έλ¬λ€κ° μ΅κ·Όμ Spring νμ΅νκΈ°μ μμ 미리 λ³Όλ§νκ² λκ° μμκΉ λλ¬λ³΄λ μ°¨μ
λνν λ± λ§λ μ± μ λ°κ²¬νκ³ , μ΄λ―Έ nνμ°¨ μ λ μ νμ§λ§ μ½λ μκ°μλ§ κΈ°μ΅μ λ¨μμ λ΄ λ°©μλλ‘ κΈ°λ‘νκ³ μ ν¬μ€ν μ νκ² λλ€.
μ°Έκ³ λ‘ μ± μ 'μ€νλ§ μ λ¬Έμ μν μλ° κ°μ²΄ μ§ν₯μ μ리μ μ΄ν΄'μ΄λ€.
λλ€μ μ€νΈλ¦Όμ΄ λ§ λμ¨ μμ μ μ± μ΄ μ§νλμ΄μ λ€νν(?) λλ€μ μ€νΈλ¦Όμ κ΄ν λ΄μ©λ μμ£Ό μ΄μ§ λ€μ΄κ°μλ€.
ν©ν°λ¦¬ λ©μλ ν¨ν΄μ μλ° κ°μ²΄μ§ν₯μ μ€λλ μ€ν΄λ₯Ό νμ΄μ€ ν¨ν΄μ΄κΈ°λ ν©λλ€.
κ°μ²΄μ§ν₯μ μ²μ λ°°μΈ λ νν ν΄λμ€μ κ°μ²΄μ κ΄κ³λ 'λΆμ΄λΉ΅νκ³Ό λΆμ΄λΉ΅μ΄λ€.'λΌλ μ€λͺ μ 무μν λ§μ΄ μ νκ² λ©λλ€.
μ λ κ°μ²΄μ§ν₯μ λν΄ λ°°μΈ λ ν΄λΉ μ€λͺ μ λ§μ΄ λ€μμμ΅λλ€. (κ·Όλ° ν΄λΉ λΉμ λ₯Ό λ€μμ λ μ¬μ€ μ μ΄ν΄κ° μκ°μλ..)
νλ μ΄ μ± μ λΉλ‘―ν΄μ 'κ°μ²΄μ§ν₯μ μ¬μ€κ³Ό μ€ν΄'λΌλ μ± μμλ μ΄ κ°λ μ κ°μ²΄μ§ν₯μ μ¬λ°λ₯΄κ² μ΄ν΄νλ κ²μ λ°©ν΄νλ€κ³ μ€λͺ ν©λλ€.
κ·ΈλΌ λΆμ΄λΉ΅μκ² λΆμ΄λΉ΅νμ 무μμΌκΉ?
π μ μ± μ μνλ©΄ λΆμ΄λΉ΅νμ λΆμ΄λΉ΅μ λ§λλ ν©ν°λ¦¬(κ°μ²΄λ₯Ό μμ±νλ) λΌκ³ ν©λλ€.
κ·Έλ ꡬλ..
κ·Όλ° ν©ν°λ¦¬κ° λμ§?
νμ¬ μ΄ ν©ν°λ¦¬λΌλ κ²μ λν΄μ μ λλ‘ μμ보μλΌλ μΌλ μΌλ‘ μ΄ κΈμ μμ±νκ² λμμ΅λλ€.
μλ‘ μ΄ μ°Έ κΈΈμμ£ ? ^^;
λ³Έλ‘
Factory Method Pattern
πΈ Factoryλ μ°λ¦¬λ§λ‘ '곡μ₯' μ λλ€. μ€μνμμ 곡μ₯μ 물건μ μμ°νλ―μ΄ μλ°μμμ Factoryλ κ°μ²΄λ₯Ό μμ±ν©λλ€.
κ·ΈλΌ μ ν¨ν΄μ μ΄λ¦ κ·Έλλ‘λ₯Ό ν΄μνλ©΄ κ°μ²΄λ₯Ό μμ±νλ λ©μλ μ¦μ λκ² λ€μ.
μ μν λ§λ‘(?) λ€μ μ 리νμλ©΄ π‘ν©ν°λ¦¬ λ©μλλ κ°μ²΄λ₯Ό μμ± λ°ννλ λ©μλ μ λλ€.
κ±°κΈ°μ ν¨ν΄μ΄ λΆκ²λλ©΄ π‘ νμ ν΄λμ€μμ ν©ν°λ¦¬ λ©μλλ₯Ό μ€λ²λΌμ΄λ©
ν΄μ κ°μ²΄λ₯Ό λ°ννκ² νλ κ²μ μλ―Έν©λλ€.
κ·Όλ° μ΄λ κ² λ§λ‘ μ€λͺ νλ κ²λ³΄λ€λ μ½λλ‘ μ€λͺ νλ κ²μ΄ μ΄ν΄νλλ°μ λ μ’μ κ² κ°μ΅λλ€.
π΄ μΆμ ν©ν°λ¦¬ λ©μλ
public abstract class Animal {
abstract AnimalToy getToy();
}
π΅ ν©ν°λ¦¬ λ©μλκ° μμ±ν κ°μ²΄μ μμ ν΄λμ€
public abstract class AnimalToy {
abstract void identify();
}
π΄ μΆμ ν©ν°λ¦¬ λ©μλ extends λ° μ€λ²λΌμ΄λ©
public class Dog extends Animal {
@Override
AnimalToy getToy() {
return new DogToy();
}
}
π΅ ν©ν°λ¦¬ λ©μλκ° μμ±ν κ°μ²΄
public class DogToy extends AnimalToy {
@Override
void identify() {
System.out.println("λλ κ°μμ§ μ₯λκ°!!");
}
}
Main
public class Main {
public static void main(String[] args) {
Animal doggy = new Dog();
AnimalToy toyBall = doggy.getToy();
toyBall.identify();
}
}
λλ κ°μμ§ μ₯λκ°!!
κ²°λ‘
μ΄μ²λΌ μΆμ ν©ν°λ¦¬ λ©μλλ₯Ό ν΅ν΄ λΆμ΄λΉ΅νκ³Ό λΆμ΄λΉ΅μ κ΄κ³λ₯Ό μκ² λμλλ°μ.
κ·ΈλΌ ν΄λμ€μ κ°μ²΄μ κ΄κ³λ λ체 λκ°?λΌλ μλ¬Έμ΄ λ€ μλ μμ΅λλ€.
μ΄ μ± μμλ μΉμ νλ κ·Έ ν΄λ΅κΉμ§ μ μν΄μ€λλ€. (μ± κ΄κ³ μ λ μλ.)
ν΄λμ€μ κ°μ²΄λ₯Ό ꡬλΆνλ κ°λ¨ν λ°©λ²μ 'λμ΄λ₯Ό λ¬Όμ΄ λ³΄λ κ²'
- μ¬λμ λμ΄λ λͺ μ΄μΈκ°?
- κΉμ°μμ λμ΄λ λͺ μ΄μΈκ°?
- λλ¬Όμ λμ΄λ λͺ μ΄μΈκ°?
λμ΄λ₯Ό λ°λ‘ μ μ μλ€λ©΄ κ°μ²΄. μλλ©΄ ν΄λμ€.
ν΄λμ€λ λΆλ₯μ λν κ°λ μΌλΏ μ€μ²΄κ° μλμ§λ§, κ°μ²΄λ μ€μ²΄ μ λλ€.
κ·ΈλΌ ν΄λμ€μ κ°μ²΄μ κ΄κ³μ λν΄ ν μ€λ‘ μ 리νλ©΄?!
ν΄λμ€ : κ°μ²΄ = μ¬λ : κΉμ°μ
ν΄λμ€ : κ°μ²΄ = μ₯ : λ―Έν€λ§μ°μ€