<aside>

</aside>


🌟 챕터 μ†Œκ°œ

μ•ˆλ…•ν•˜μ„Έμš”, μ—¬λŸ¬λΆ„! 😊 μ˜€λŠ˜μ€ 마치 νƒ€μž„λ¨Έμ‹ μ²˜λŸΌ 객체의 μƒνƒœλ₯Ό νŠΉμ • μ‹œμ μœΌλ‘œ 되돌릴 수 있게 ν•΄μ£ΌλŠ” **λ©”λ©˜ν†  νŒ¨ν„΄(Memento Pattern)**에 λŒ€ν•΄ μ•Œμ•„λ³Ό κ±°μ˜ˆμš”! πŸ•°οΈβͺ

κ²Œμž„μ„ ν•˜λ‹€κ°€ 'μ €μž₯(Save)' λ²„νŠΌμ„ λˆ„λ₯΄κ±°λ‚˜, λ¬Έμ„œ νŽΈμ§‘κΈ°μ—μ„œ 'μ‹€ν–‰ μ·¨μ†Œ(Undo)' κΈ°λŠ₯을 μ‚¬μš©ν•˜λŠ” κ²½ν—˜, λ‹€λ“€ μžˆμœΌμ‹œμ£ ? λ©”λ©˜ν†  νŒ¨ν„΄μ€ λ°”λ‘œ 이런 객체의 νŠΉμ • μ‹œμ  μƒνƒœλ₯Ό 'μŠ€λƒ…μƒ·'처럼 μ°μ–΄μ„œ 보관해 λ‘μ—ˆλ‹€κ°€, λ‚˜μ€‘μ— ν•„μš”ν•  λ•Œ κ·Έ μƒνƒœλ‘œ μ •ν™•νžˆ 볡원할 수 있게 ν•΄μ£ΌλŠ” 행동 νŒ¨ν„΄μž…λ‹ˆλ‹€.

μ€‘μš”ν•œ 것은 이 과정을 객체의 λ‚΄λΆ€ ꡬ쑰λ₯Ό 외뢀에 λ…ΈμΆœν•˜μ§€ μ•Šκ³ (μΊ‘μŠν™”λ₯Ό μœ„λ°˜ν•˜μ§€ μ•Šκ³ ) μ•ˆμ „ν•˜κ²Œ μˆ˜ν–‰ν•œλ‹€λŠ” μ μž…λ‹ˆλ‹€! ν•¨κ»˜ μžμ„Ένžˆ μ•Œμ•„λ΄…μ‹œλ‹€! ✨


🎯 챕터 λͺ©ν‘œ

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

  1. λ©”λ©˜ν†  νŒ¨ν„΄μ˜ μ˜λ„(μΊ‘μŠν™”λ₯Ό κΉ¨μ§€ μ•Šκ³  객체 λ‚΄λΆ€ μƒνƒœλ₯Ό μ €μž₯ν•˜κ³ , λ‚˜μ€‘μ— 볡원)λ₯Ό μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. 이 νŒ¨ν„΄μ΄ ν•΄κ²°ν•˜λŠ” 문제(μ‹€ν–‰ μ·¨μ†Œ/μž¬μ‹€ν–‰, μƒνƒœ μ €μž₯/볡원)λ₯Ό 식별할 수 μžˆμŠ΅λ‹ˆλ‹€.
  3. μ£Όμš” μ°Έμ—¬μž(Originator, Memento, Caretaker)와 각자의 역할을 μ΄ν•΄ν•©λ‹ˆλ‹€.
  4. λ©”λ©˜ν†  νŒ¨ν„΄μ΄ μ–΄λ–»κ²Œ Originator의 μΊ‘μŠν™”λ₯Ό λ³΄ν˜Έν•˜λŠ”μ§€ μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  5. Pythonμ—μ„œ λ©”λ©˜ν†  νŒ¨ν„΄μ„ κ΅¬ν˜„ν•˜κ³  ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  6. λ©”λ©˜ν†  νŒ¨ν„΄μ΄ μ»€λ§¨λ“œ νŒ¨ν„΄κ³Ό ν•¨κ»˜ Undo/Redo κΈ°λŠ₯에 μ–΄λ–»κ²Œ ν™œμš©λ˜λŠ”μ§€ μ΄ν•΄ν•©λ‹ˆλ‹€.

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

κ²Œμž„ μ €μž₯/λ‘œλ“œ μ‹œμŠ€ν…œ 예제λ₯Ό 톡해, κ²Œμž„ μ§„ν–‰ 쀑 νŠΉμ • μ‹œμ μ˜ μƒνƒœλ₯Ό λ©”λ©˜ν†  객체에 μ €μž₯ν•˜κ³  λ³΅μ›ν•˜λŠ” 과정을 λ³΄μ—¬λ“œλ¦½λ‹ˆλ‹€. λͺ¨λ“  μ½”λ“œλŠ” memento_example.py 파일 ν•˜λ‚˜μ— λ‹΄κ² μŠ΅λ‹ˆλ‹€.