λ””μžμΈ νŒ¨ν„΄μ΄λž€?

2023. 6. 5. 04:48Β·πŸ–₯️ Study Note/Design Patteren

{ λ””μžμΈ νŒ¨ν„΄μ΄λž€? }

μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό 섀계할 λ•Œ νŠΉμ • λ§₯λ½μ—μ„œ 자주 λ°œμƒν•˜λŠ” 고질적인 λ¬Έμ œλ“€μ— μ‚¬μš©ν•  ν•  수 μžˆλŠ” μ •ν˜•μ  ν•΄κ²° 방식을 λ§ν•œλ‹€.

  • λ””μžμΈ νŒ¨ν„΄μ€ 문제 및 λ°°κ²½, μ‹€μ œ 적용 사둀, μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•œ μƒ˜ν”Œ μ½”λ“œ λ“±μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.
  • “바퀴λ₯Ό λ‹€μ‹œ 발λͺ…ν•˜μ§€ 마라(Don’t reinvent the wheel)” λΌλŠ” 말과 같이, 개발 κ³Όμ • μ€‘μ—μ„œ λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ μƒˆλ‘œ 해결책을 κ΅¬μƒν•˜λŠ” 것보닀 λ¬Έμ œμ— ν•΄λ‹Ήν•˜λŠ” λ””μžμΈ νŒ¨ν„΄μ„ μ°Έκ³ ν•˜μ—¬ μ μš©ν•˜λŠ” 것이 더 νš¨μœ¨μ μ΄λ‹€.
  • GoF의 λ””μžμΈ νŒ¨ν„΄ μœ ν˜•μ— 따라 생성 νŒ¨ν„΄ 5개, ꡬ쑰 νŒ¨ν„΄ 7개, ν–‰μœ„ νŒ¨ν„΄ 11개 총 23개의 νŒ¨ν„΄μœΌλ‘œ κ΅¬μ„±λœλ‹€.

{ λ””μžμΈ νŒ¨ν„΄ μž₯단점 }

μž₯점

  • λ²”μš©μ μΈ μ½”λ”© μŠ€νƒ€μΌλ‘œ 인해 ꡬ쑰 νŒŒμ•…μ΄ μš©μ΄ν•˜λ‹€.
  • 객체 μ§€ν–₯ 섀계 및 κ΅¬ν˜„μ˜ 생산성을 λ†’μ΄λŠ” 데 μ ν•©ν•˜λ‹€.
  • κ²€μ¦λœ ꡬ쑰의 μž¬μ‚¬μš©μ„ 톡해 개발 μ‹œκ°„κ³Ό λΉ„μš©μ΄ μ ˆμ•½λœλ‹€.
  • 개발자 κ°„μ˜ μ›ν™œν•œ μ˜μ‚¬μ†Œν†΅μ΄ κ°€λŠ₯ν•˜λ‹€.
  • λ””μžμΈ νŒ¨ν„΄μ€ λ””μ»€ν”Œλ§μ— μ‹ κ²½μ¨μ„œ μ œμž‘λœ 만큼, ν”„λ‘œκ·Έλž¨μ˜ μˆ˜μ •κ³Ό κΈ°λŠ₯ μΆ”κ°€κ°€ μœ μ—°ν•˜λ‹€.

단점

  • 객체 μ§€ν–₯을 기반으둜 ν•œ 섀계와 κ΅¬ν˜„μ„ λ‹€λ£¨λ―€λ‘œ 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄ μ•„λ‹Œ 경우 μ μš©ν•˜κΈ° μ–΄λ ΅λ‹€.
  • μ½”λ“œμ˜ μœ μ—°μ„±μ€ μ„±λŠ₯상 λΉ„μš©μ„ μš”κ΅¬ν•œλ‹€. 즉, λ””μžμΈ νŒ¨ν„΄μ΄ 졜고의 μ‹€ν–‰ 속도λ₯Ό λ‚΄λŠ” μ΅œμ ν™”λœ μ½”λ“œλŠ” μ•„λ‹ˆλ‹€.

{ λ””μžμΈ νŒ¨ν„΄ μ’…λ₯˜ }

생성 νŒ¨ν„΄ Creational Pattern

생성 νŒ¨ν„΄μ€ 객체 생성과 κ΄€λ ¨λœ νŒ¨ν„΄μ΄λ‹€.

생성 νŒ¨ν„΄μ€ 객체의 생성과 μ°Έμ‘° 과정을 μΊ‘μŠν™”ν•˜μ—¬ 객체가 μƒμ„±λ˜κ±°λ‚˜ λ³€κ²½λ˜μ–΄λ„ ν”„λ‘œκ·Έλž¨μ˜ ꡬ쑰에 영ν–₯을 크게 λ°›μ§€ μ•Šλ„λ‘ ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ— μœ μ—°μ„±μ„ 더해쀀닀.

총 5개의 νŒ¨ν„΄μ΄ μžˆλ‹€.

  1. 좔상 νŒ©ν† λ¦¬ Abstract Factory
  2. νŒ©ν† λ¦¬ λ©”μ„œλ“œ Factory Method
  3. λΉŒλ” Builder
  4. ν”„λ‘œν†  νƒ€μž… Prototype
  5. 싱글톀 Singleton

ꡬ쑰 νŒ¨ν„΄ Structural Pattern

ꡬ쑰 νŒ¨ν„΄μ€ ν΄λž˜μŠ€λ‚˜ 객체듀을 μ‘°ν•©ν•˜μ—¬ 더 큰 ꡬ쑰둜 λ§Œλ“€ 수 있게 ν•΄μ£ΌλŠ” νŒ¨ν„΄μ΄λ‹€.

ꡬ쑰 νŒ¨ν„΄μ€ ꡬ쑰가 λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ„ κ°œλ°œν•˜κΈ° μ‰½κ²Œ 도와쀀닀.

총 7개의 νŒ¨ν„΄μ΄ μžˆλ‹€.

  1. μ–΄λŒ‘ν„° Adaptor
  2. λΈŒλ¦¬μ§€ Bridge
  3. μ»΄ν¬μ§€νŠΈ Composite
  4. ν…Œμ½”λ ˆμ΄ν„° Decorator
  5. νΌμ‹Έλ“œ Facade
  6. ν”ŒλΌμ΄μ›¨μ΄νŠΈ FlyWeight
  7. ν”„λ‘μ‹œ Proxy

ν–‰μœ„ νŒ¨ν„΄ Behavioral Pattern

ν–‰μœ„ νŒ¨ν„΄μ€ ν΄λž˜μŠ€λ‚˜ 객체듀이 μ„œλ‘œ μƒν˜Έμž‘μš©ν•˜λŠ” λ°©λ²•μ΄λ‚˜ μ±…μž„ λΆ„λ°° 방법을 μ •μ˜ν•˜λŠ” νŒ¨ν„΄μ΄λ‹€.

ν–‰μœ„ νŒ¨ν„΄μ€ ν•˜λ‚˜μ˜ 객체둜 μˆ˜ν–‰ν•  수 μ—†λŠ” μž‘μ—…μ„ μ—¬λŸ¬ 객체둜 λΆ„λ°°ν•˜λ©΄μ„œ 결합도λ₯Ό μ΅œμ†Œν™”ν•  수 있게 도와쀀닀.

총 11개의 νŒ¨ν„΄μ΄ μžˆλ‹€.

  1. μ±…μž„ 연쇄 Chain of Responsibility
  2. λͺ…λ Ή Command
  3. 인터프리터 Interpreter
  4. 반볡자 Iterartor
  5. μ€‘μž¬μž Mediator
  6. λ©”λ©˜ν†  Memento
  7. μ˜΅μ €λ²„ Observer
  8. μƒνƒœ State
  9. μ „λž΅ Strategy
  10. ν…œν”Œλ¦Ώ λ©”μ†Œλ“œ Template Method
  11. 방문자 Visitor
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'πŸ–₯️ Study Note > Design Patteren' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

ν”„λ‘œν† νƒ€μž…(ProtoType) νŒ¨ν„΄  (0) 2023.06.19
κ΄€μ°°μž(Observer) νŒ¨ν„΄  (0) 2023.06.08
κ²½λŸ‰(FlyWeight) νŒ¨ν„΄  (2) 2023.06.07
λͺ…λ Ή(Command) νŒ¨ν„΄  (2) 2023.06.05
'πŸ–₯️ Study Note/Design Patteren' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • ν”„λ‘œν† νƒ€μž…(ProtoType) νŒ¨ν„΄
  • κ΄€μ°°μž(Observer) νŒ¨ν„΄
  • κ²½λŸ‰(FlyWeight) νŒ¨ν„΄
  • λͺ…λ Ή(Command) νŒ¨ν„΄
Beankong_
Beankong_
μ£Όλ‹ˆμ–΄ ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž˜λ¨Έ 곡뢀 기둝
  • Beankong_
    Beankong's Devlog
    Beankong_
  • 전체
    였늘
    μ–΄μ œ
    • 전체 κΈ€ (145) N
      • β›… Daily (0)
      • πŸ–₯️ Study Note (1) N
        • C++ (1) N
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • 🧭 Devlog (8) N
        • μ˜€λ‹΅λ…ΈνŠΈ (4) N
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
Beankong_
λ””μžμΈ νŒ¨ν„΄μ΄λž€?
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”