Skip to content

Latest commit

Β 

History

History
82 lines (44 loc) Β· 2.08 KB

[Design Pattern] Overview.md

File metadata and controls

82 lines (44 loc) Β· 2.08 KB

[Design Pattern] κ°œμš”


μΌμ’…μ˜ 섀계 기법이며, 섀계 방법이닀.

  • λͺ©μ 

    SW μž¬μ‚¬μš©μ„±, ν˜Έν™˜μ„±, μœ μ§€ λ³΄μˆ˜μ„±μ„ 보μž₯.


  • νŠΉμ§•

    λ””μžμΈ νŒ¨ν„΄μ€ μ•„μ΄λ””μ–΄μž„, νŠΉμ •ν•œ κ΅¬ν˜„μ΄ μ•„λ‹˜.

    ν”„λ‘œμ νŠΈμ— 항상 μ μš©ν•΄μ•Ό ν•˜λŠ” 것은 μ•„λ‹ˆμ§€λ§Œ, μΆ”ν›„ μž¬μ‚¬μš©, ν˜Έν™˜, μœ μ§€ λ³΄μˆ˜μ‹œ λ°œμƒν•˜λŠ” 문제 해결을 μ˜ˆλ°©ν•˜κΈ° μœ„ν•΄ νŒ¨ν„΄μ„ λ§Œλ“€μ–΄ λ‘” κ²ƒμž„.


  • 원칙

    SOLID (객체지ν–₯ 섀계 원칙)

    (κ°„λž΅ν•œ μ„€λͺ…)

    1. Single Responsibility Principle

      ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μ—­ν• λ§Œ ν•΄μ•Ό 함.

    2. Open - Close Principle

      ν™•μž₯ (상속)μ—λŠ” μ—΄λ €μžˆκ³ , μˆ˜μ •μ—λŠ” λ‹«ν˜€ μžˆμ–΄μ•Ό 함.

    3. Liskov Substitution Principle

      μžμ‹μ΄ λΆ€λͺ¨μ˜ μžλ¦¬μ— 항상 ꡐ체될 수 μžˆμ–΄μ•Ό 함.

    4. Interface Segregation Principle

      μΈν„°νŽ˜μ΄μŠ€κ°€ 잘 λΆ„λ¦¬λ˜μ–΄μ„œ, ν΄λž˜μŠ€κ°€ κΌ­ ν•„μš”ν•œ μΈν„°νŽ˜μ΄μŠ€λ§Œ κ΅¬ν˜„ν•˜λ„λ‘ 해야함.

    5. Dependency Inversion Property

      μƒμœ„ λͺ¨λ“ˆμ΄ ν•˜μœ„ λͺ¨λ“ˆμ— μ˜μ‘΄ν•˜λ©΄ μ•ˆλ¨.

      λ‘˜ λ‹€ 좔상화에 μ˜μ‘΄ν•˜λ©°, μΆ”μƒν™”λŠ” μ„ΈλΆ€ 사항에 μ˜μ‘΄ν•˜λ©΄ μ•ˆλ¨.


  • λΆ„λ₯˜ (μ€‘μš”)

3가지 νŒ¨ν„΄μ˜ λͺ©μ μ„ μ΄ν•΄ν•˜κΈ°!

  1. 생성 νŒ¨ν„΄ (Creational) : 객체의 생성 방식 κ²°μ •

    Class-creational patterns, Object-creational patterns.

    예) DBConnection을 κ΄€λ¦¬ν•˜λŠ” Instanceλ₯Ό ν•˜λ‚˜λ§Œ λ§Œλ“€ 수 μžˆλ„λ‘ μ œν•œν•˜μ—¬, λΆˆν•„μš”ν•œ 연결을 λ§‰μŒ.
    

  2. ꡬ쑰 νŒ¨ν„΄ (Structural) : κ°μ²΄κ°„μ˜ 관계λ₯Ό 쑰직

    예) 2개의 μΈν„°νŽ˜μ΄μŠ€κ°€ μ„œλ‘œ ν˜Έν™˜μ΄ λ˜μ§€ μ•Šμ„ λ•Œ, λ‘˜μ„ μ—°κ²°ν•΄μ£ΌκΈ° μœ„ν•΄μ„œ μƒˆλ‘œμš΄ 클래슀λ₯Ό λ§Œλ“€μ–΄μ„œ μ—°κ²°μ‹œν‚¬ 수 μžˆλ„λ‘ 함.
    

  3. ν–‰μœ„ νŒ¨ν„΄ (Behavioral): 객체의 ν–‰μœ„λ₯Ό 쑰직, 관리, μ—°ν•©

    예) ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ” ν•¨μˆ˜ 및 μ•Œκ³ λ¦¬μ¦˜λ“€μ„ 미리 μ„ μ–Έν•˜μ—¬, μƒμ†μ‹œ 이λ₯Ό ν•„μˆ˜λ‘œ κ΅¬ν˜„ν•˜λ„λ‘ 함.