κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° (OOP)/Design Pattern
[Design Pattern] Abstract Factory Pattern
loki d
2021. 9. 4. 23:02
728x90
μΆμ ν©ν 리 ν¨ν΄
ν¨ν΄μ λΆλ₯ : μμ± ν¨ν΄
ν¨ν΄μ λͺ©μ : This pattern provide an interface for creating families of related or dependent objects without specifying their concrete classes. β GoF β
ν¨ν΄μ μ μ©
- μμ€ν μ΄ νΉμ μ’ λ₯μ μ νκ΅°μΌλ‘ ꡬμ±μ΄ λμ΄μΌ ν κ²½μ°
- νΉμ μ’ λ₯μ μ νκ΅°μ λμ μ¬μ©μ κ°μ νν νμκ° μλ κ²½μ°
- μμ±λλ ꡬ체μ μ νκ΅°μ μ¨κΈ°λ μ νκ΅° μμ± λΌμ΄λΈλ¬λ¦¬λ₯Ό μ 곡νκ³ μΆμ κ²½μ°
- ν¨ν΄ μ μ© κ°λ₯μλλ¦¬μ€ : ν¨κ» μ¬μ©ν΄μΌ νλ GUI μ»΄ν¬λνΈλ₯Ό μ 곡νκΈ° μν΄ μ¬μ©ν μ μμ
ν¨ν΄μ μ°Έμ¬μ
- μΆμ ν©ν 리(abstract factory): μ νκ΅°μ μμλ κ° μ νμ μμ±νκΈ° μν λ©μλλ₯Ό μ 곡ν¨. μ΄ λ§€μλλ€μ ν©μ΄ μ νκ΅°μ μμλ μ νμ λͺ©λ‘ μν κΉμ§ ν μ μμ
- ꡬ체μ ν©ν 리(concrete factory): μ νμ μ€μ μμ±νλ ν΄λμ€
- μ ν(abstract product): μμ±λ κ°μ²΄μ μΆμ ν΄λμ€ λλ interface. μ΅λ μ νκ΅°μ μμλ μ ν μ’ λ₯ λ§νΌ νμν μ μμ
- ꡬ체μ μ ν(concrete product): μ€μ μμ±λ κ°μ²΄μ ν΄λμ€
ν¨ν΄μ ꡬ쑰
- νΉμ μ νκ΅°μ μ νμ μμ±νκ³ μΆμΌλ©΄ ν΄λΉ ꡬ체μ ν©ν 리λ₯Ό μ¬μ©ν¨
- ν΄λΌμ΄μΈνΈλ λͺ¨λ ꡬ체μ ν©ν 리λ₯Ό μ¬μ©ν μ μμ
ν¨ν΄μ μ₯λ¨μ
- μ₯μ
- ν΄λΌμ΄μΈνΈλ ꡬ체μ νμ λμ μ μΆμ νμ μ ν΅ν΄ κ°μ²΄λ₯Ό μ¬μ©ν¨
- μ¬μ©νλ μ νκ΅°μ λ³κ²½μ μ©μ΄νκ² ν΄μ€
- μ¬μ©νλ κ°μ²΄ κ° μΌκ΄μ±(μλ‘ νΈνλλ€λ κ²)μ νμ ν μ μμ
- λ¨μ
- ꡬ체μ ν©ν 리λ ꡬ체μ μ νκ³Ό λ¨λ¨νκ² μ°κ²°λμ΄ μμΌλ©°, μμ±ν μ μλ μ νκ΅°μ΄ μΆμμ ν©ν 리 interfaceλ₯Ό ν΅ν΄ κ³ μ λμ΄ μμ. λ°λΌμ μ νκ΅°μ μ μ’ λ₯μ μ νμ μΆκ°νλ κ²μ΄ νλ¦
ν¨ν΄μ λ³ν
- μ νκ΅°μ κ° μ νλ§λ€ νλμ λ©μλλ₯Ό μ 곡νλ ννκ° μλλΌ μΈμλ₯Ό μ΄μ©νμ¬ μ νμ μμ±νλ νν λ‘ λ§λ€ μ μμ. νμ§λ§ λͺ¨λ μ νμ μμ°λ₯΄λ νμ μ λ§λ€μ΄μΌ νκΈ° λλ¬Έμ C++, μλ°μ κ°μ μΈμ΄λ€μ μ΄μ©νμ¬ μ΄μ κ°μ λ°©λ²μΌλ‘ ꡬννλ κ²μ μ½μ§ μμ
κ΄λ ¨ ν¨ν΄
- μ±κΈν€ ν¨ν΄ : λ³΄ν΅ κ΅¬μ²΄μ ν©ν 리λ€μ ν¨μ¨μ± λλ¬Έμ μ±κΈν€ ν¨ν΄μΌλ‘ ꡬνλ¨