🎯 객체지ν–₯κ³Ό μΈμŠ€ν„΄μŠ€: λ””μžμΈ νŒ¨ν„΄λ³„ 관점 정리

μ•„λž˜λŠ” μΈμŠ€ν„΄μŠ€ 전달방식에 따라 μ •λ¦¬ν•œ 12κ°€μ§€ λŒ€ν‘œμ μΈ λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€.

1. Strategy νŒ¨ν„΄

  • 핡심 κ°œλ…: 행동을 μΊ‘μŠν™”ν•˜μ—¬ λŸ°νƒ€μž„μ— ꡐ체
  • μ˜λ„: μΈν„°νŽ˜μ΄μŠ€λ‘œ μ•Œκ³ λ¦¬μ¦˜ μ •μ˜, 객체 μ£Όμž…μœΌλ‘œ μ‹€ν–‰ μ „λž΅ λ³€κ²½
  • μΈμŠ€ν„΄μŠ€ 전달/μ‚¬μš© 방식: μ»¨ν…μŠ€νŠΈμ— μ „λž΅ 객체 μ£Όμž…

2. Template Method νŒ¨ν„΄

  • 핡심 κ°œλ…: μƒμœ„ ν΄λž˜μŠ€μ—μ„œ μ•Œκ³ λ¦¬μ¦˜ λΌˆλŒ€ μ •μ˜
  • μ˜λ„: μ„ΈλΆ€ λ™μž‘μ€ μ„œλΈŒν΄λž˜μŠ€μ—μ„œ κ΅¬ν˜„
  • μΈμŠ€ν„΄μŠ€ 전달/μ‚¬μš© 방식: 상속 기반 μ‹€ν–‰ 흐름 μ œμ–΄

3. Command νŒ¨ν„΄

  • 핡심 κ°œλ…: λͺ…령을 객체둜 μΊ‘μŠν™”
  • μ˜λ„: μš”μ²­κ³Ό μ‹€ν–‰ 뢄리
  • μΈμŠ€ν„΄μŠ€ 전달/μ‚¬μš© 방식: λͺ…λ Ή 객체 생성 ν›„ μ‹€ν–‰

4. Prototype νŒ¨ν„΄

  • 핡심 κ°œλ…: 객체 볡사λ₯Ό 톡해 μƒˆ 객체 생성
  • μ˜λ„: λ³΅μž‘ν•œ 생성 λŒ€μ‹  볡사
  • μΈμŠ€ν„΄μŠ€ 전달/μ‚¬μš© 방식: Clone()으둜 볡제

5. State νŒ¨ν„΄

  • 핡심 κ°œλ…: μƒνƒœμ— 따라 행동을 λ³€κ²½
  • μ˜λ„: μƒνƒœ 객체에 따라 μ‹€ν–‰ 둜직 닀름
  • μΈμŠ€ν„΄μŠ€ 전달/μ‚¬μš© 방식: Contextκ°€ μƒνƒœ 객체λ₯Ό μ°Έμ‘°

6. Decorator νŒ¨ν„΄

  • 핡심 κ°œλ…: 객체에 κΈ°λŠ₯을 λ™μ μœΌλ‘œ μΆ”κ°€
  • μ˜λ„: κΈ°μ‘΄ 객체λ₯Ό 감싸 κΈ°λŠ₯ μΆ”κ°€
  • μΈμŠ€ν„΄μŠ€ 전달/μ‚¬μš© 방식: μ€‘μ²©λœ 래퍼 객체 μ‚¬μš©

7. Observer νŒ¨ν„΄

  • 핡심 κ°œλ…: 객체 μƒνƒœ λ³€κ²½ μ‹œ 의쑴 객체에 μ•Œλ¦Ό
  • μ˜λ„: 이벀트 기반 μ‹œμŠ€ν…œ
  • μΈμŠ€ν„΄μŠ€ 전달/μ‚¬μš© 방식: κ΅¬λ…μžμ—κ²Œ notify

8. Mediator νŒ¨ν„΄

  • 핡심 κ°œλ…: 객체 κ°„ λ³΅μž‘ν•œ 톡신을 μ€‘μž¬μžμ—κ²Œ μœ„μž„
  • μ˜λ„: 객체 κ°„ 직접 μ°Έμ‘° 제거
  • μΈμŠ€ν„΄μŠ€ 전달/μ‚¬μš© 방식: μ€‘μž¬μž 톡해 톡신

9. Facade νŒ¨ν„΄

  • 핡심 κ°œλ…: λ³΅μž‘ν•œ μ„œλΈŒμ‹œμŠ€ν…œμ„ λ‹¨μˆœ μΈν„°νŽ˜μ΄μŠ€λ‘œ 제곡
  • μ˜λ„: λ‹¨μˆœν™”λœ μ ‘κ·Ό 제곡
  • μΈμŠ€ν„΄μŠ€ 전달/μ‚¬μš© 방식: ν•˜λ‚˜μ˜ 클래슀둜 μ„œλΈŒμ‹œμŠ€ν…œ λž˜ν•‘

10. Abstract Factory νŒ¨ν„΄

  • 핡심 κ°œλ…: κ΄€λ ¨ 객체 생성 μΈν„°νŽ˜μ΄μŠ€ 제곡
  • μ˜λ„: ꡬ상 클래슀 μ§€μ • 없이 객체ꡰ 생성
  • μΈμŠ€ν„΄μŠ€ 전달/μ‚¬μš© 방식: νŒ©ν† λ¦¬ κ°μ²΄μ—μ„œ 생성

11. Proxy νŒ¨ν„΄

  • 핡심 κ°œλ…: λŒ€λ¦¬ 객체λ₯Ό 톡해 λŒ€μƒ μ œμ–΄
  • μ˜λ„: μ ‘κ·Ό μ œμ–΄, μ§€μ—° μ΄ˆκΈ°ν™” λ“±
  • μΈμŠ€ν„΄μŠ€ 전달/μ‚¬μš© 방식: ν”„λ‘μ‹œκ°€ μ‹€μ œ 객체 호좜

12. Adapter νŒ¨ν„΄

  • 핡심 κ°œλ…: μΈν„°νŽ˜μ΄μŠ€ ν˜Έν™˜ μ•ˆ 될 λ•Œ 쀑간 λ³€ν™˜μž 제곡
  • μ˜λ„: ν˜Έν™˜λ˜μ§€ μ•ŠλŠ” μΈν„°νŽ˜μ΄μŠ€ μ—°κ²°
  • μΈμŠ€ν„΄μŠ€ 전달/μ‚¬μš© 방식: μƒˆ μΈν„°νŽ˜μ΄μŠ€λ‘œ 감싸기