GoF์ ๋์์ธ ํจํด, ๋ฉ๋ฉํ ํจํด์ ๋ํด ์์๋ณธ๋ค.
ํด๋น ๊ธ์, ๋ค์์ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ดํดํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค.
ํต์ฌ ์์ฝ
- ๊ฐ์ฒด์ ์ํ๋ฅผ ๊ธฐ์ตํด๋์๋ค๊ฐ ํ์ํ ๋ ๊ธฐ์ตํด๋ ์ํ๋ก ๊ฐ์ฒด๋ฅผ ๋๋๋ฆฐ๋ค.
- ๊ฐ์ฒด์ ์ํ์ ๋ํ ๊ธฐ์ต์ ๋ค๋ฅธ ๊ฐ์ฒด์์๋ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ ๊ทผ
- ๊ฐ์ฒด์ ์ํ์ ๋ํ ๊ธฐ์ต ์์ฑ์ ์ค์ง ํด๋น ๊ฐ์ฒด๋ง์ด ํ ์ ์๋ค.
- ๊ฐ์ฒด์ ์ค๋
์ท์ ์ ์ฅํด๋๋ ํจํด
์์
Code
Walker
main
ํ์ฉ์ฑ
- ์ด๋ค ๊ฐ์ฒด์ ์ํ์ ๋ํ ์ค๋
์ท์ ์ ์ฅํ ํ ๋์ค์ ์ด ์ํ๋ก ๋ณต๊ตฌํด์ผ ํ ๋
- ์ํ๋ฅผ ์ป๋๋ฐ ํ์ํ ์ง์ ์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ๋๋ฉด ๊ทธ ๊ฐ์ฒด์๊ตฌํ ์ธ๋ถ์ฌํญ์ด ๋๋ฌ๋๋ ๊ฒฝ์ฐ
๊ฒฐ๊ณผ
- ์บก์ํ๋ ๊ฒฝ๊ณ๋ฅผ ์ ์งํ ์ ์๋ค.
- ๊ฒฐ๊ตญ ๋ฉ๋ฉํ ๊ฐ์ฒด๋ ํด๋น ๊ฐ์ฒด ๋ด๋ถ์์ ์ฒ๋ฆฌํ๊ฒ ๋๋ฏ๋ก ๋ด๋ถ ๊ตฌํ ์ฌํญ์ ์จ๊ฒจ์ง๋ค.
- ์ฌ์ฉ๋ ๋ฃ์ด์ค์ผ๋ก์จ ์ฒ๋ฆฌ๋๋ ์บก์ํ ๋ณดํธ๋๋ค.
- ์ํ ์ ์ฅ์ ๋ํ ์ฑ
์์ ๋ถ๋ฆฌํ ์ ์๋ค.
- Walker๋ ๋ฐ์์ ๋ฃ์ด์ค ๋ฟ์ด๋ค.
- ๋ง์ ์์ ์ ๋ณด ์ ์ฅ, ๋น๋ฒํ๊ฒ ์ํ ๋์ฒดํ ๊ฒฝ์ฐ ๋น์ฉ์ด ๋์์ง ์ ์๋ค.
- ๊ณ์ํด์ ์ ์ฅํ๊ณ ๋ฎ์ด์จ์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฐ์ฐ๋์ ์ฆ๋๋ ์ ์๋ค.
- ๋ฉ๋ฉํ ๊ฐ์ฒด๋ฅผ ๋ฐ๊ณ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด (
main
)๋ ์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ด๋ฆฌํ๋๋ฐ ํ์ํ ๋น์ฉ์ ์ ์ ์๋ค.
- ๋จ์ํ ๋ง๋ค์ด์ ์ฌ์ฉ๋ง ํ๋ค๋ฉด, ๊ฐ์ฒด ๋ด๋ถ ๋ชจ๋ ์ํ๊ฐ ๋ณต์ฌ ๋ฑ์ ๋น์ฉ์ ์์ง๋ชปํ๊ณ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
์๊ฐํด๋ณผ ์
- Swift์์ ๊ฐ์ฒด ์์นด์ด๋น ํ๋ ๊ฒ์ด ์ด์ ๋น์ท (
NSCoding
)
- NSObject์ ๋ํด ์์นด์ด๋นํ ๋๋ ํด๋น ๊ฐ์ฒด ์์์ ์ ์ํด์ฃผ์์ด์ผ ํจ
- ์๋ฒฝํ ๋งค์นญ๋์ง ์์ ์๋ ์์ง๋ง ๋น์ทํ๋ค๊ณ ์๊ฐ
Reference