Memento Pattern
Memento Pattern (๋ฉ๋ฉํ ํจํด)
์ด๋ค ํ๋ก๊ทธ๋จ๋ค์์๋ ๊ฐ์ฒด๊ฐ ์ํ๋ฅผ ๊ฐ์ง๋ฉฐ
, ํ๋ก๊ทธ๋จ์ด ์ํ๋๋ฉฐ ๊ฐ์ฒด์ ์ํ๊ฐ ๊ณ์ ๋ณํํ๊ณ
, ์ด์ ์ํ๋ก์ ๋ณต์์ ์ํด ์ด ์ํ ์ ๋ณด๋ฅผ ์ ์ฅ
ํด์ผ ํ ์๋ ์๋ค. ์ฃผ๋ก ๊ฒ์ ํ๋ก๊ทธ๋จ ๋ฑ์ด ๊ทธ๋ฌํ๋ค.
์ด ๋ ์ํ ์ ๋ณด๋ฅผ ๋ค๋ฅธ ๋ฐ์ดํฐ์ ํจ๊ป ํ ํด๋์ค์ ์ ์ฅํ๋ค๋ฉด, ๋ค์์ ๋ฌธ์ ์ ์ด ๋ฐ์ํ๋ค.
ํด๋์ค๊ฐ ๊ฑฐ๋ํด์ ธ SRP๋ฅผ ์๋ฐฐํ๊ฒ ๋๋ค.
์ํ ์ ๋ณด๋ ์์ฃผ ๋ณํํ๋ค. ์ด๋ ๋ณํํ์ง ์๋ ๋ฐ์ดํฐ์๋ ์ง์์ ์ผ๋ก ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ํจํด์ด ๋ฐ๋ก ๋ฉ๋ฉํ ํจํด
์ด๋ค.
๋ฉ๋ฉํ ํจํด์ ์ํ ์ ๋ณด๋ฅผ ๋ณ๋์ ํด๋์ค๋ก ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ๋ค. ์ด ํด๋์ค๋ก๋ถํฐ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ Memento ๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, Memento ๊ฐ์ฒด์ ๋ํ ์์ฑ ๋ฐ ์ ๊ทผ ๊ถํ์ ์ํ์ ์ ์์ ์ ํด๋์ค๋ง์ด ๊ฐ์ง๋ค. ์ฆ, ์ธ๋ถ์์๋ ๋ ๊ฐ์ง ํด๋์ค๊ฐ ๋ง์น ํ๋์ ํด๋์ค์ธ ๊ฒ์ฒ๋ผ ๋์ํ๋ค.
๊ตฌ์ฑ

Originator
- Memento ๊ฐ์ฒด๋ฅผ์์ฑ
ํ๊ณ , ํน์ ์ํ๋ก ๋๋์๊ฐ๊ณ ์ ํ ๋ ์ด๋ฅผ์ด์ฉ
ํ๋ค.Memento
- Originator ๊ฐ์ฒด์ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.CareTaker
- Memento ๊ฐ์ฒด๋ค์๋ณด๊ด
ํ๊ฑฐ๋๊ด๋ฆฌ
ํ ์ ์๋ค. ์์ฑ, ๋ด๋ถ ์ ๋ณด(์ํ) ์ ๊ทผ์ ๋ถ๊ฐํ๋ค.
ํน์ง
๋ฉ๋ฉํ ๋ฅผ ํตํด ์ด๋ฃจ๊ณ ์ ํ๋ ๊ฐ์ฅ ์ค์ํ ์์น์ SRP์ด๋ค. ์ธ๋ถ์์๋ ๋ ํด๋์ค๊ฐ ํ๋์ธ ๊ฒ์ฒ๋ผ ๋ณด์์๋ ์ด๋ ๊ฒ ํด๋์ค๋ฅผ ๋ถ๋ฆฌํ๋ ์ด์ ๋ ์ฑ ์์ ๋ถ๋ฆฌํ์ฌ ๋ถํ์ํ ์ฝ๋ ๋ณ๊ฒฝ์ ๋ง๊ณ ์ฝ๋ ๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ์ํจ์ด๋ค.
์ปค๋งจ๋ ํจํด(Command Pattern)์์ ๋๋๋ฆฌ๊ธฐ ์ฐ์ฐ์ ์ํํ๊ธฐ ์ํด ํด๋น ํจํด์ ์ด์ฉํ ์ ์๋ค.
๋ฐ๋ณต์ ํจํด(Iterator Pattern)์์ Iterator์ ์ํ ์ ๋ณด๋ฅผ ๋ง๋ค๊ธฐ ์ํด ํด๋น ํจํด์ ์ด์ฉํ ์ ์๋ค.
ํ๋ผ์ด์จ์ดํธ ํจํด๊ณผ ๋น๊ตํด๋ณด๋ฉด ์ข๋ค. ํ๋ผ์ด์จ์ดํธ ํจํด์ ๊ณตํต์ ๋ถ๋ถ์ ๊ด๋ฆฌํ๋ ํด๋์ค๋ฅผ ๋ณ๋๋ก ๋ถ๋ฆฌํ์ฌ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ค์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ด๊ธฐ ์ํจ์ด๋ผ๋ฉด, ๋ฉ๋ฉํ ํจํด์ ์ํ ์ ๋ณด๋ฅผ ๋ณ๋๋ก ๋ถ๋ฆฌํ์ฌ ๋๋ฌด ๋ง์ ์ฑ ์์ ๋ถ๋ฆฌํ๊ณ ์ํ๋ฅผ ์ ์ฅ, ์ถ์ ํ๊ธฐ ์ํจ์ด๋ค.
Last updated