<aside>

</aside>


🌟 챕터 μ†Œκ°œ

μ•ˆλ…•ν•˜μ„Έμš”, μ—¬λŸ¬λΆ„! 😊 μ˜€λŠ˜μ€ 객체의 **'μƒνƒœ(State)'**에 따라 행동이 μ™„μ „νžˆ λ‹¬λΌμ§€λŠ” 경우λ₯Ό μš°μ•„ν•˜κ²Œ μ²˜λ¦¬ν•˜λŠ” **μƒνƒœ νŒ¨ν„΄(State Pattern)**에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

자판기λ₯Ό 생각해 λ³ΌκΉŒμš”? πŸ’° 동전을 λ„£μ§€ μ•Šμ€ μƒνƒœ, 동전을 넣은 μƒνƒœ, μƒν’ˆμ΄ λ§€μ§„λœ μƒνƒœλ§ˆλ‹€ λ²„νŠΌμ„ λˆŒλ €μ„ λ•Œμ˜ λ°˜μ‘μ΄ μ™„μ „νžˆ λ‹€λ₯΄μ£ . μƒνƒœ νŒ¨ν„΄μ€ μ΄λ ‡κ²Œ 객체가 내뢀적인 μƒνƒœ 변화에 따라 마치 λ‹€λ₯Έ 클래슀의 객체처럼 행동해야 ν•  λ•Œ, μƒνƒœλ³„λ‘œ λ‹¬λΌμ§€λŠ” λ³΅μž‘ν•œ if/else 쑰건문을 ν”Όν•˜κ³  각 μƒνƒœμ— λ§žλŠ” 행동을 κΉ”λ”ν•˜κ²Œ μΊ‘μŠν™”ν•˜λŠ” 방법을 μ œκ³΅ν•©λ‹ˆλ‹€. ν•¨κ»˜ μ•Œμ•„λ³ΌκΉŒμš”? ✨


🎯 챕터 λͺ©ν‘œ

이번 κ°•μ˜μ˜ λͺ©ν‘œμž…λ‹ˆλ‹€.

  1. μƒνƒœ νŒ¨ν„΄μ˜ μ˜λ„(객체의 λ‚΄λΆ€ μƒνƒœ 변경에 따라 행동을 λ³€κ²½ν•˜κ²Œ 함)λ₯Ό μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. 이 νŒ¨ν„΄μ΄ ν•΄κ²°ν•˜λŠ” 문제(μƒνƒœ 기반의 λ³΅μž‘ν•œ 쑰건 λΆ„κΈ°λ¬Έ)λ₯Ό 식별할 수 μžˆμŠ΅λ‹ˆλ‹€.
  3. μ£Όμš” μ°Έμ—¬μž(Context, State, ConcreteState)와 각자의 역할을 μ΄ν•΄ν•©λ‹ˆλ‹€.
  4. **μ»¨ν…μŠ€νŠΈ(Context)**κ°€ μ–΄λ–»κ²Œ ν˜„μž¬ μƒνƒœ(State) κ°μ²΄μ—κ²Œ 행동을 μœ„μž„ν•˜λŠ”μ§€ μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  5. μƒνƒœ 객체 λ‚΄λΆ€μ—μ„œ **μƒνƒœ 전이(State Transition)**κ°€ μ–΄λ–»κ²Œ μ²˜λ¦¬λ˜λŠ”μ§€ μ΄ν•΄ν•©λ‹ˆλ‹€.
  6. Pythonμ—μ„œ μƒνƒœ νŒ¨ν„΄μ„ κ΅¬ν˜„ν•˜κ³  ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  7. μƒνƒœ νŒ¨ν„΄μ˜ 이점(μƒνƒœ 둜직 집쀑, 쑰건문 제거, OCP μ€€μˆ˜)을 μ΄ν•΄ν•©λ‹ˆλ‹€.

πŸ’» κ°•μ˜μ—μ„œ μ‚¬μš©λ˜λŠ” 전체 μ½”λ“œ 및 ν”„λ‘œμ νŠΈ ꡬ쑰

λ¬Έμ„œ νŽΈμ§‘κΈ°μ˜ λ¬Έμ„œ μƒνƒœ 예제λ₯Ό 톡해, λ¬Έμ„œκ°€ 'μ΄ˆμ•ˆ', 'κ²€ν†  쀑', 'κ²Œμ‹œλ¨' μƒνƒœλ₯Ό κ°€μ§€λ©° 각 μƒνƒœμ— 따라 μž‘μ—… κ²°κ³Όκ°€ μ–΄λ–»κ²Œ λ‹¬λΌμ§€λŠ”μ§€ λ³΄μ—¬λ“œλ¦½λ‹ˆλ‹€. λͺ¨λ“  μ½”λ“œλŠ” state_example.py 파일 ν•˜λ‚˜μ— λ‹΄κ² μŠ΅λ‹ˆλ‹€.