μλ¬Έ
μ ν΅μ μΈ κ²½μ ν > μΈκ°μ μ΄κΈ°μ μ΄λ©° ν©λ¦¬μ μΈ νλμ νλ€.
μ€μ μ€ν κ²°κ³Ό > μΈκ°μ μ΄κΈ°μ μ΄λ©° ν©λ¦¬μ μΈ νλμ νμ§λ§, λ€λ₯Έ μ¬λλ€κ³Όμ κ΄κ³λ₯Ό λ§Ίλ κ³Όμ μμμ μΈκ°μ λ³Έμ°μ νΉμ±μ λ°°μ νκ³ μμ μ μ΄μ΅μ μ΅μννλ λΆν©λ¦¬ν μ νμ νλ€.
μ¦ μ€μν κ²μ μΈκ° λ³Έμ°μ νΉμ±μ΄ μλλΌ μΈκ°μ΄ μ²ν νκ²½ (νμΈκ³Όμ νλ ₯)μ΄λ€.
κ°μ²΄μ§ν₯μ μΈκ³μμλ νλ ₯μ΄ κ°μ²΄μ νλ λ°©μμ κ²°μ νλ€. μ€μν κ²μ κ°μ²΄λ€ κ°μ μ΄λ€μ§λ νλ ₯μ΄λ€.
νλ ₯
μ€μ μν©μμμ νλ ₯μ λ€μκ³Ό κ°λ€.
- νλ ₯μ ν μ¬λμ΄ λ€λ₯Έ μ¬λμκ² μμ²ν λ λ°μνκ² λλ€.
- μμ²μ λ°μ μ¬λμ μμ μ λ°©μμΌλ‘ μλ΅νκ² λλ€.
- μ΄λ μμ²μ λ°μ μ¬λμ μμ λ§κ³ λ λ€λ₯Έ μ¬λμ νμλ‘ ν μλ μλ€. κ·Έλλ κ·Έ μ¬λμκ²λ μλ‘μ΄ μμ²μ΄ μ λ¬λλ€.
- μ¦ νλ ₯μ μμ²κ³Ό μλ΅μ΄ μ°μμ μΌλ‘ λ°μνλ€.
μ¨λ¦¬μ€ μΈκ³μμμ νλ ₯ κ³Όμ λ λ€μκ³Ό κ°λ€.
- λκ΅°κ°κ° μμκ² μ¬νμ μμ²νλ€. μμκ² μμ²ν μ΄μ λ μμ΄ μ¬νμ μνν μλ¬΄κ° μμΌλ©°, μ¬νμ νμν μ§μμ΄ μκΈ° λλ¬Έμ΄λ€.
- μμ΄ νμ ν λΌμκ² λͺ©κ²©μλ₯Ό λΆλ¬μ€λΌκ³ μμ²νλ€. ν λΌμκ² μμ²ν μ΄μ λ λͺ©κ²©μμ λν΄ μκ³ μμΌλ©° λͺ©κ²©μλ₯Ό λΆλ₯Ό μλ¬΄κ° μκΈ° λλ¬Έμ΄λ€.
- μμ΄ λͺ¨μ μ₯μμκ² μ¦μΈνλΌκ³ μμ²νλ€. λͺ¨μ μ₯μμκ² μμ²ν μ΄μ λ μ¬νμ λμμ΄ λ λ§ν μ§μμ κ°μ§κ³ μμΌλ©° μ¦μΈν μλ¬΄κ° μκΈ° λλ¬Έμ΄λ€.
κ²°κ΅ μ΄λ€ κ°μ²΄λ€μ΄ νΉμ ν μμ²μ λ°μλ€μΌ μ μλ μ΄μ λ κ·Έ μμ²μ λν΄ μ μ ν λ°©μμΌλ‘ μλ΅νλ λ° νμν μ§μκ³Ό νλ λ°©μμ κ°μ§κ³ μκΈ° λλ¬Έμ΄λ©°, μμ²κ³Ό μλ΅μ νλ ₯μ μ°Έμ¬νλ κ°μ²΄κ° μνν μ± μμ μ μνλ€.
μ± μ
κ°μ²΄μ§ν₯ κ°λ°μμ κ°μ₯ μ€μν λ₯λ ₯μ μ± μμ λ₯μνκ² μννΈμ¨μ΄ κ°μ²΄μ ν λΉνλ κ²μ΄λ€ - ν¬λ μ΄κ·Έ λΌλ§ (Craig Larman)
κ°μ²΄μ μ±
μμ κ°μ²΄κ° 무μμ μκ³ μλκ°μ 무μμ ν μ μλκ°λ‘ ꡬμ±λλ€. μΌλ°μ μΌλ‘ κ°μ²΄μ μ±
μμ μΈλΆμμ μ κ·Ό κ°λ₯ν κ³΅μ© μλΉμ€μ κ΄μ μμ μ΄μΌκΈ°νκΈ°μ, μ±
μμ κ°μ²΄μ κ³΅μ© μΈν°νμ΄μ€ (public interface)λ₯Ό ꡬμ±νλ€.
1μ₯: νλ ₯νλ κ°μ²΄λ€μ 곡λ체μμ μμ±νμλ―μ΄, κ°μ²΄μ§ν₯ μ€κ³λΌλ μμ μ μ μ ν κ°μ²΄μκ² μ μ ν μ±
μμ ν λΉνλ κ²μμ μμλλ©°, μ±
μμ κ°μ²΄μ§ν₯ μ€κ³μ νμ§μ κ²°μ νλ κ°μ₯ μ€μν μμλ€.
μ±
μμ μμ²μ μμ νλ νμͺ½ κ°μ²΄ κ΄μ μμ 무μμ ν μ μλμ§λ₯Ό λνλΈ κ²μ΄λ€.
λ©μμ§λ νλ ₯μ μ°Έμ¬νλ λ κ°μ²΄ μ¬μ΄μ κ΄κ³λ₯Ό κ°μ‘°ν κ²μ΄λ€.
λ°λΌμ κ°μ²΄μ§ν₯ μ€κ³λ νλ ₯μ μ°Έμ¬νκΈ° μν΄ μ΄λ€ κ°μ²΄κ° μ΄λ€ μ±
μμ μνν΄μΌ νκ³ μ΄λ€ κ°μ²΄λ‘λΆν° λ©μμ§λ₯Ό μμ ν κ²μΈμ§λ₯Ό κ²°μ νλ κ²μΌλ‘λΆν° μμλλ€.
μν
μν μ μ¬μ¬μ© κ°λ₯νκ³ μ μ°ν κ°μ²΄μ§ν₯ μ€κ³κ° λλλ‘ νλ μμμ΄λ€.
μμ νμ¬λΌκ³ λΆλ₯΄κ³ λͺ¨μ μ₯μλ₯Ό μ¦μΈμΌλ‘ λΆλ₯΄λ μ΄μ λ μκ³Ό λͺ¨μ μ₯μκ° μλ κ°μ²΄λ€μ΄ κ·Έ μν μ λ체ν¨μΌλ‘μ¨ μ¬μ¬μ© κ°λ₯ν μ€κ³κ° λ μ μκΈ° λλ¬Έμ΄λ€.
λ°λΌμ, μν μ νλ ₯ λ΄μμ λ€λ₯Έ κ°μ²΄λ‘ λ체ν μ μμμ λνλ΄λ μΌμ’
μ νμμ΄λ€.
μ΄λ μν μ λ체ν μ μλ κ°μ²΄λ λμΌν λ©μμ§λ₯Ό μ΄ν΄ν μ μλ κ°μ²΄λ‘ νμ λλ€.
μμμ μ¬μμΌλ‘ νμ¬κ° λ³κ²½λ μ μλ μ΄μ λ μ¬μμ΄ μκ³Ό κ°μ΄ μ¬ννλΌλ λ©μμ§λ₯Ό μ΄ν΄ν μ μκΈ° λλ¬Έμ΄λ€.
μν μ μ¬μ©νλ©΄ μ μ¬ν νλ ₯μ μΆμννμ¬ μΈμ§ κ³ΌλΆνλ₯Ό μ€μΌ μ μκ³ , λ€μν κ°μ²΄λ€μ μ¬μ©ν μ μμ΄ μ¬μ¬μ©μ±μ΄ μ¦κ°νλ€. νλ ₯μ μΆμνλ 곧 μ ν리μΌμ΄μ
μ μ€κ³λ₯Ό μ΄ν΄νκ³ κΈ°μ΅νκΈ° μ½κ² λ§λ λ€. μ΄λ κ°μ²΄μ§ν₯λ§μ νμ΄λ€.
κ°μ²΄λ μν μ μ£Όμ΄μ§ μ±
μ μ΄μΈμ λ€λ₯Έ μ±
μμ μνν μλ μλ€. λͺ¨μ μ₯μλ λ³Έλμ λͺ¨μλ₯Ό ν맀ν μ±
μμ μ μ μ μΈνκ³ μ¦μΈν μ±
μμ 맑μλ€.
μν μ λ체 κ°λ₯μ±μ νμ νΈνμ±μ μλ―Ένλ©° νμ νΈνμ±μ λμΌν μ±
μμ μνμ μλ―Ένλ€!
κ°μ²΄μ λͺ¨μμ κ²°μ νλ νλ ₯
λ°μ΄ν°λ λ¨μ§ κ°μ²΄κ° νμ (μ±
μ)λ₯Ό μννλ λ° νμν μ¬λ£λ€μΌλΏμ΄λ€. λ°λΌμ λ°μ΄ν°λ₯Ό μ€μ μ μΌλ‘ κ°μ²΄μ§ν₯μ μ€κ³νλ κ²μ μ³μ§ λͺ»νλ€.
ν΄λμ€λ₯Ό μ€μ μ μΌλ‘ κ°μ²΄μ§ν₯μ μ€κ³νλ κ² λν μ³μ§ μλ€. μ¨λ¦¬μ€ μΈκ³μμμ μμ νμ€μ μκ³Ό λ€λ₯΄κ² κ·Όμνκ³ μμ μμ νμκ° μλ€. νλ ₯μ μ°Έμ¬νκΈ° μν κ²λ§ κ°μ§κ³ μμΌλ©΄ μΆ©λΆνλ€. λ°λΌμ κ°μ²΄κ° μ°Έμ¬νλ νλ ₯μ λ¨Όμ μ€κ³ν΄μΌ νλ€.
μ¬λ°λ₯Έ κ°μ²΄ μ€κ³ λ°©λ²μ λ€μκ³Ό κ°λ€.
- κ°μ²΄μ§ν₯ μ€κ³μ μ°Έμ¬νλ κ°μ²΄λ€μ΄ μ£Όκ³ λ°μ μμ²κ³Ό μλ΅μ νλ¦μ κ²°μ νλ€.
- μ¨λ¦¬μ€ μΈκ³μμ νμ¬ νμν κ²μ “μ¬νμ μ§ν” νλ νλ ₯μ΄λ€. μ΄λ₯Ό μν΄μλ “μ¬νμ ν μ± μ”, “μ¦μΈν μ± μ”, “λͺ©κ²©μλ₯Ό λΆλ¬μ¬ μ± μ” λ±μ΄ νμνλ€.
- κ° κ°μ²΄μκ² μ μ ν μ± μμ λΆμ¬νλ€.
- “μ¬νμ ν μ± μ”μ μ κ°μ²΄μκ², “μ¦μΈν μ± μ”μ λͺ¨μ μ₯μ κ°μ²΄μκ², “λͺ©κ²©μλ₯Ό λΆλ¬μ¬ μ± μ”μ ν λΌ κ°μ²΄μκ² ν λΉνλ€.
- κ° κ°μ²΄κ° μ± μμ μνν λ νμν λ°μ΄ν°λ€μ μ μνλ€.
- κ·Έλ€μ ν΄λμ€μ ꡬν λ°©λ²μ μ μνλ€. (λ°λΌμ λ°μ΄ν°μ ν΄λμ€λ λ€μ κ²°μ λλ€.)
λ°λΌμ κ°μ²΄λ₯Ό λ¨Όμ μΆ©λΆν νλ ₯μ μΌλ‘ λ§λ ν, νλ ₯μ μ°Έμ¬ν λ μμ λ§μ λ°©λ²μΌλ‘ μ²λ¦¬ν μ μλλ‘ μμ¨μ μΈ μ‘΄μ¬λ‘ μ€κ³νλ©΄ λλ€.
κ°μ²΄μ§ν₯ μ€κ³ κΈ°λ²
μμ μν , μ± μ, νλ ₯μ ν λλ‘ κ°μ²΄μ§ν₯μ μ€κ³νλ κΈ°λ²μ ν¬κ² λ€μκ³Ό κ°μ΄ λλλ€.
μ± μ-μ£Όλ μ€κ³
μ± μ μ£Όλ μ€κ³λ 2μ₯: μ΄μν λλΌμ κ°μ²΄μμλ μμ±νλ μ€κ³ λ°©λ²μ΄λ€.
- μμ€ν μ΄ μ¬μ©μμκ² μ 곡ν΄μΌ νλ κΈ°λ₯μΈ μμ€ν μ± μμ νμ νλ€.
- μμ€ν μ± μμ λ μμ μ± μμΌλ‘ λΆν νλ€.
- λΆν λ μ± μμ μνν μ μλ μ μ ν κ°μ²΄ λλ μν μ μ°Ύμ μ± μμ ν λΉνλ€.
- κ°μ²΄κ° μ± μμ μννλ μ€μ λ€λ₯Έ κ°μ²΄μ λμμ΄ νμν κ²½μ° μ΄λ₯Ό μ± μμ§ μ μ ν κ°μ²΄ λλ μν μ μ°Ύλλ€. (μ± μμ μ¬λ¬ μ’ λ₯μ κ°μ²΄κ° μνν μ μλ€λ©΄ μΆμμ μΈ μν λ‘ λ체λλ€.)
- ν΄λΉ κ°μ²΄ λλ μν μκ² μ± μμ ν λΉν¨μΌλ‘μ¨ λ κ°μ²΄κ° νλ ₯νκ² νλ€.
λ§ κ·Έλλ‘ μ± μμ λ¨Όμ μκ°ν ν μ± μμ μκ² μͺΌκ° λ€μ κ° μ± μμ μνν κ°μ²΄λ₯Ό μ νν΄ λκ°λ μ€κ³ λ°©μμ΄λ€.
λμμΈ ν¨ν΄
μ± μ μ£Όλ μ€κ³λ κ°μ²΄μ μν , μ± μ, νλ ₯μ κ³ μνκΈ° μν λ°©λ²κ³Ό μ μ°¨λ₯Ό μ μνμ§λ§, λμμΈ ν¨ν΄μ μ± μ μ£Όλ μ€κ³μ κ²°κ³Όλ₯Ό νννλ λ° μ¬μ©λλ€.
ν¨ν΄ (Pattern): μΌμ ν ννλ μμ λλ μ ν - λ€μ΄λ² μ¬μ
μ¦ ν¨ν΄μ νΉμ ν μν©μμ μ€κ³λ₯Ό λκΈ° μν΄ λͺ¨λ°©νκ³ μμ ν μ μλ κ³Όκ±°μ μ€μ κ²½νμ΄λ€.
λμμΈ ν¨ν΄μ μ±
μ μ£Όλ μ€κ³λ₯Ό κΈ°λ°μΌλ‘ μμ±ν ν¨ν΄λ€μ μλ―Ένλ€. μ΄λ₯Ό μ°Έκ³ ν΄ μ¬λλ€μ λ λΉ λ₯΄κ² μ±
μ μ£Όλ μ€κ³λ₯Ό μ΄λ»κ² ν΄μΌ νλμ§ μ΅λν μ μλ€. κ·Έλ° μ μμ λμμΈ ν¨ν΄μ μ±
μ μ£Όλ μ€κ³λ₯Ό ꡬνν μ μλ μ§λ¦κΈΈκ³Όλ κ°μ μν μ νλ€.
λμμΈ ν¨ν΄ μ€ νλμΈ COMPOSITE ν¨ν΄μ 보μ.
- Clientλ μμ²ν ν΄λΌμ΄μΈνΈλ₯Ό μλ―Ένλ€.
- Componentλ ν΄λΌμ΄μΈνΈμ νλ ₯ν μ μλ κ³΅μ© μΈν°νμ΄μ€λ₯Ό μ μν μν μ μννλ€.
- Leafλ κ³΅μ© μΈν°νμ΄μ€μ λν μ€νΌλ μ΄μ νΈμΆμ μλ΅ν μ μλ κΈ°λ³Έ νμλ₯Ό ꡬννλ€.
- Compositeλ μΈλΆλ‘λΆν° λΆλΆμ λν μΈλΆ μ¬νμ κ°μΆκ³ ν¬ν¨λ λΆλΆμ νλμ λ¨μλ‘ νλνλ μν μ΄λ€.
ν μ€νΈ-μ£Όλ κ°λ°
ν
μ€νΈ μ£Όλ κ°λ°μ ν
μ€νΈλ₯Ό μμ±νκ³ , (μ€λ³΅μ΄ μμ μ μλ) κ°λ¨ν μ½λλ₯Ό μμ±ν λ€, 리ν©ν°λ§ μμ
μ ν΅ν΄ μ€λ³΅μ μ κ±°ν΄ λκ°λ κ°λ° λ°©λ²μ΄λ€. κ·Έλ¬λ μ΄λ³΄μλ€μ μ΄λ€ ν
μ€νΈλ₯Ό μ΄λ€ μμΌλ‘ μμ±ν΄μΌ νλμ§ μ λͺ¨λ₯Ό μ μλ€. κ°μ²΄κ° μ΄λ―Έ μ‘΄μ¬νλ€κ³ κ°μ νκ³ κ°μ²΄μκ² μ΄λ€ λ©μμ§λ₯Ό μ μ‘ν κ²μΈμ§μ λ¨Όμ μκ°ν κ²μ μλ €μ£Όμ§λ§, μν , μ±
μ, νλ ₯ κ΄μ μμ κ°μ²΄λ₯Ό λ°λΌλ΄μΌλ§ ν¨κ³Όκ° μλ€.
ν
μ€νΈ μ£Όλ κ°λ°μ ν΅μ¬μ μ±
μμ μνν κ°μ²΄ λλ ν΄λΌμ΄μΈνΈκ° κΈ°λνλ κ°μ²΄μ μν μ΄ λ©μμ§λ₯Ό μμ ν λ μ΄λ€ κ²°κ³Όλ₯Ό λ°ννκ³ κ·Έ κ³Όμ μμ μ΄λ€ κ°μ²΄μ νλ ₯ν κ²μΈμ§μ λν κΈ°λλ₯Ό μ½λμ ννλ‘ μμ±νλ κ²μ΄λ€.
λ°λΌμ μ΄ κ°μ²΄κ° μ μ ν λ°©μμΌλ‘ μ±
μμ λ°λ₯Έ μ μ ν κΈ°λκ°μ λμΆν΄ λ΄λμ§λ₯Ό ν
μ€νΈ μ₯μΉλ‘ μμ νκ² κ²μ¦ν΄ λ΄λ κ²μ΄ ν
μ€νΈ μ£Όλ κ°λ°μ λͺ©μ μ΄λΌ ν μ μκ² λ€.
λ°λΌμ ν
μ€νΈ μ£Όλ κ°λ°μ μν , μ±
μ, νλ ₯μ κ΄μ μμ κ°μ²΄μ§ν₯μ μΆ©λΆν λ°λΌλ³Ό μ μμ΄μΌμ§λ§ λ€λ£° μ μλ κ°λ° λ°©λ²μ΄λ€.
μμ½
- μν , μ±
μ, νλ ₯μ κΈ°λ°μΌλ‘ μ€κ³νλ κ²μ΄ κ°μ₯ μ€μνλ€.
- μν μ λ€λ₯Έ κ°μ²΄κ° λμΌνκ² μμ²μ λν΄ μλ΅ν μ μλ€λ©΄ λ€λ₯Έ κ°μ²΄λ‘ λ³κ²½ν μ μλ€λ μ¬μ¬μ©μ±μ λ΄ν¬νλ€.
- μ± μμ κ°μ²΄κ° 무μμ ν μ μλκ°μ 무μμ μκ³ μλκ°κ° κ²°μ λκ² νλ€. μ± μμ κ°μ²΄μ§ν₯ μ€κ³μ νμ§μ κ²°μ νλ€.
- νλ ₯μ κ°μ²΄κ° μμ²νκ³ μλ΅νλ κ³Όμ μμ μ΄λ£¨μ΄μ§λ€. μμ²κ³Ό μλ΅μ νλ ₯μ μ°Έμ¬νλ κ°μ²΄κ° μνν μ± μμ μ μνλ€.
- μν , μ±
μ, νλ ₯μ κΈ°λ°μΌλ‘ μ€κ³λ λ°©λ²μ ν¬κ² μΈ κ°μ§λ‘ μλ€.
- μ± μ μ£Όλ μ€κ³λ λ§ κ·Έλλ‘ μμ€ν μμ ꡬνν΄μΌ ν μ± μμ λ¨Όμ μκ°νκ³ κ·Έ κ°μ²΄λ₯Ό λΆν ν λ€ κ° μ± μμ μνν μ μλ κ°μ²΄μ μνν νλμ λμ€μμΌ κ³ λ―Όνλ λ°©λ²μ΄λ€.
- λμμΈ ν¨ν΄μ λ°λ³΅λλ μν©μμ μ± μ μ£Όλ μ€κ³λ₯Ό λΉ λ₯΄κ² ꡬνν μ μλλ‘ μ°Έκ³ ν μ μλ ν¨ν΄μ΄λ€.
- ν μ€νΈ μ£Όλ κ°λ°μ μν , μ± μ, νλ ₯μ μΆ©λΆν κ³ λ―Όν΄ λ³΄κ³ μ± μ μ£Όλ μ€κ³λ₯Ό λ§μ΄ ν΄ λ³Έ μ¬λλ§ ν¨κ³Όμ μΌλ‘ κ°λ°ν μ μλ κ°λ°λ²μ΄λ€.
'λμ π > π κ°μ²΄μ§ν₯μ μ¬μ€κ³Ό μ€ν΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
6μ₯: κ°μ²΄ μ§λ (0) | 2023.11.08 |
---|---|
5μ₯: μ± μκ³Ό λ©μμ§ (0) | 2023.11.07 |
3μ₯: νμ κ³Ό μΆμν (1) | 2023.11.02 |
2μ₯: μ΄μν λλΌμ κ°μ²΄ (1) | 2023.11.01 |
1μ₯: νλ ₯νλ κ°μ²΄λ€μ 곡λ체 (2) | 2023.10.31 |