MVC๋ Model View Controller์ ์ฝ์๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค, ๋ฐ์ดํฐ ๋ฐ ๋ ผ๋ฆฌ ์ ์ด๋ฅผ ๊ตฌํํ๋๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ํํธ์จ์ด ๋์์ธ ํจํด์ด๋ค.
์ํํธ์จ์ด์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ํ๋ฉด์ ๊ตฌ๋ถํ๋๋ฐ ์ค์ ์ ๋๊ณ ์๋ค.
์ดํ๋ฆฌ์ผ์ด์ ์ด '๋ฌด์'์ ํ ๊ฒ์ธ์ง ์ ์ํ๊ณ ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๊ด๋ฆฌํ๋ค.
ํ๋ฉด์ '๋ฌด์'์ธ๊ฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ์ญํ ์ ํ๋ค.
์ปจํธ๋กค๋ฌ ํ์์ ์ข ์๋์ด, ๋ชจ๋ธ์ด๋ ์ปจํธ๋กค๋ฌ๊ฐ ๋ณด์ฌ์ฃผ๋ ค๊ณ ํ๋ ๋ชจ๋ ํ์ํ ๊ฒ๋ค์ ๋ณด์ฌ์ค๋ค.
๋ชจ๋ธ์ด '์ด๋ป๊ฒ' ์ฒ๋ฆฌํ ์ง๋ฅผ ์๋ ค์ฃผ๋ ์ญํ ์ ํ๊ณ , ๋ชจ๋ฐ์ผ์์๋ ํ๋ฉด์ ๋ก์ง์ฒ๋ฆฌ ๋ถ๋ถ์ด๋ค.
ํ๋ฉด์์ ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์์ ์ฒ๋ฆฌ๋๋ ๋ถ๋ถ์ ๊ตฌํํ๊ฒ ๋๋ฉฐ, ์์ฒญ ๋ด์ฉ์ ๋ถ์ํด์ Model๊ณผ View์ ์ ๋ฐ์ดํธ ์์ฒญ์ ํ๊ฒ ๋๋ค.
Controller
๋ Model
๊ณผ View
๊ฐ ๊ฐ๊ฐ ๋ฌด์์ ํด์ผ ํ ์ง๋ฅผ ์๊ณ ์๊ณ , ํต์ ํ๋ค.
๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ Model๊ณผ ์์ ํ UI์ ์์กด์ ์ธ View๊ฐ ์๋ก ์ง์ ์ด์ผ๊ธฐํ ์ ์๊ฒ ํ๋ค.
๊ฐ๋จํ ์ผํ ๋ฆฌ์คํธ ์ฑ์ด ์๋ค๊ณ ์๊ฐํด๋ณด์. ์ด๋ฒ ์ฃผ์ ์ฌ์ผํ ๊ฐ ํญ๋ชฉ์ ์ด๋ฆ, ๊ฐฏ์, ๊ฐ๊ฒฉ์ ๋ชฉ๋ก์ด ํ์ํ๋ค.
์ถ์ฒ : MDN
Model
์ ๋ฐ์ดํฐ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ชจ๋ธ์ ์ผ๋ฐ์ ์ผ๋ก ๋ทฐ์๊ฒ ์๋ฆฌ๋ฉฐ(๋ฐ๋ผ์ ํ์ํ๋๋ก ํ๋ฉด์ ๋ณ๊ฒฝํ ์ ์๋ค) ์
๋ฐ์ดํธ ๋ ๋ทฐ๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ๋ค๋ฅธ ๋ก์ง์ด ํ์ํ ๊ฒฝ์ฐ ๊ฐ๋ ์ปจํธ๋กค๋ฌ์๊ฒ ์๋ฆฌ๊ธฐ๋ ํ๋ค.
๋ชจ๋ธ์ ๋ฆฌ์คํธ ํญ๋ชฉ์ด ํฌํจํด์ผ ํ๋ ๋ฐ์ดํฐ < ํ๋ชฉ, ๊ฐ๊ฒฉ, ๋ฑ > ์ด๋ฏธ ์กด์ฌํ๋ ๋ฆฌ์คํธ ํญ๋ชฉ์ด ๋ฌด์์ธ์ง๋ฅผ ์ง์ ํ๋ค.
View
๋ ์ฑ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ด๋ฉฐ ํญ๋ชฉ์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ๋ฐฉ์์ ์ ์ํ๋ฉฐ, ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ธ๋ก๋ถํฐ ๋ฐ๋๋ค.
Controller
๋ ์ฑ์ ์ฌ์ฉ์๋ก๋ถํฐ์ ์
๋ ฅ์ ๋ํ ์๋ต์ผ๋ก ๋ชจ๋ธ ๋๋ ๋ทฐ๋ฅผ ์
๋ฐ์ดํธ ํ๋ ๋ก์ง์ ํฌํจํ๋ค.
ํญ๋ชฉ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์๊ฒ ํด์ฃผ๋ ์ ๋ ฅ ํผ๊ณผ ๋ฒํผ์ ๊ฐ๋๋ค. ์ด๋ฐ ์ก์ ๋ค์ ๋ชจ๋ธ์ด ์ ๋ฐ์ดํธ ๋๋ ๊ฒ์ด๋ฏ๋ก ์ ๋ ฅ์ด ์ปจํธ๋กค๋ฌ์๊ฒ ์ ์ก๋๊ณ , ๋ชจ๋ธ์ ์ ๋นํ๊ฒ ์ฒ๋ฆฌํ ๋ค์ ์ ๋ฐ์ดํธ๋ ๋ฐ์ดํฐ๋ฅผ ๋ทฐ๋ก ์ ์กํ๋ค.
ํญ๋ชฉ์ ์ํ๋ฒณ ์์๋ก ์ ๋ ฌํ๋ค๋์ง ๊ฐ๊ฒฉ์์ผ๋ก ์ ๋ ฌํ๋ ๊ฒฝ์ฐ์๋ ๋ชจ๋ธ์ ์ ๋ฐ์ดํธ ํ ํ์ ์์ด ๋ฐ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
์ถ์ฒ : ์ํ์ฝ๋ฉ
์ ๊ทธ๋ฆผ์ฒ๋ผ ์ฌ์ฉ์๊ฐ Controller๋ฅผ ์กฐ์ํ๋ฉด Controller๋ Model์ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๊ทธ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์๊ฐ์ ์ธ ํํ์ ๋ด๋นํ๋ View๋ฅผ ์ ์ดํด์ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๊ฒ ๋๋ค.
๋์์ธ ํจํด์ ์๊ธฐ ์ ์๋ ์จ๊ฐ ๋ชจ๋๋ค์ด ๋ค์ฃฝ๋ฐ์ฃฝ ์์ฌ ์ง์ ๋ถํ ์ฝ๋๋ก ๊ฐ๋ํ๋ค. ์ด๋ฐ ์ฝ๋๋ ๊ฐ๋ฐ์ ๋ณธ์ธ์ด ์ ์ง๋ณด์ ํ๊ธฐ์๋ ๋ณต์กํ๊ณ , ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ํฌ์ ๋๋ฉด ๋ถ์ํ๊ธฐ๊ฐ ์ด๋ ต๊ณ ์ ์ง๋ณด์ ํ๊ธฐ๋ ํ๋ค๋ค.
MVC ํจํด์ ์ญํ ์ ๋ฐ๋ผ ํ์คํ๊ฒ ๋ถ๋ฆฌํ์ฌ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ณ ํ๋ก๊ทธ๋จ์ ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋์ด๊ธฐ ์ํ ๊ธฐ๋ฒ์ด๋ค.
๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ฉด Model ๋ถ๋ถ๋ง ์์ ํ๊ณ , UI๊ฐ ์์ ๋๋ฉด View ๋ถ๋ถ๋ง ์์ ํ๋ค.
๋ฌผ๋ก Controller๋ ๋ ๋ถ๋ถ์ ๊ด์ฅํ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ์์ ์ด ํ์ํ์ง๋ง ๊ธฐ์กด์ฒ๋ผ ๋ฉ์ธ ๋ค์ด์ผ๋ก๊ทธ/ํผ์์์ ๋ฌด๋ถ๋ณํ ํ๋ ์ฝ๋ฉ์ ํ์๊ฐ ์๋ค.
์๋ก ๋ถ๋ฆฌ๋์ด ๊ฐ์์ ์ญํ ์ ์ง์คํ ์ ์๊ฒ๋ํ์ฌ ๊ฐ๋ฐ์ ํ๊ณ ๊ทธ๋ ๊ฒ ๋ง๋ค๋ฉด ์ ์ง๋ณด์, ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฅ์ฑ, ์ ์ฐ์ฑ์ด ์ฆ๊ฐํ๊ณ ์ค๋ณต์ฝ๋ฉ์ด๋ผ๋ ๋ฌธ์ ์ ๋ํ ์ฌ๋ผ์ง๋ค.
ํ Model์ ๋ค์์ View๋ค์ ๊ฐ์ง ์ ์๊ณ ๋ฐ๋๋ก Controller๋ฅผ ํตํด์ ํ View์ ์ฐ๊ฒฐ๋๋ Model๋ ์ฌ๋ฌ ๊ฐ๊ฐ ๋ ์ ์๋ค.
์ด๋ ๊ฒ ๋๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก View์ Model์ด ์๋ก ์์กด์ฑ์ ๋๊ฒ ๋๋ค.
๋ฌผ๋ก ์ค๊ณ๋ฅผ ์ ํ๋ค๋ฉด Model๊ฐ์ ์์กด์ฑ ๋ฟ๋ง์๋๋ผ View์ Model ์ฌ์ด์ ์๊ธฐ๋ ์์กด์ฑ๋ ์ค์ผ ์ ์์ง๋ง ํ๋ก๊ทธ๋จ ํน์ฑ์ ํ์ฐ์ ์ผ๋ก ํ๋ฉด์ ๋ณต์กํ ํ๋ฉด๊ณผ ๋ฐ์ดํฐ์ ๊ตฌ์ฑ ํ์ํ ๊ตฌ์ฑ์ด๋ผ๋ฉด, Controller์ ๋ค์์ Model๊ณผ View๊ฐ ๋ณต์กํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋ ์ํฉ์ด ์๊ธธ ์ ์๋ค.
์ด๋ ๊ฒ MVC ๊ท๋ชจ ์์ฒด๊ฐ ๋๋ฌด ๋ณต์กํ๊ณ ๋น๋ํด์ ธ์, ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋๋ง๋ค ์์กด์ฑ์ ์ผ์ผ์ด ํด๊ฒฐํด์ผํด์ ๋ฉ์๋ ๋ถ์์ด๋ ํ ์คํธ๋ ์ด๋ ต๊ฒ ๋๋ค. ์ด๋ฐ ํํ์ MVC๋ฅผ Massive ViewController๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ, ์ด๋ MVC์ ํ๊ณ๋ฅผ ํํํ ์ฉ์ด์ด๊ธฐ๋ ํ๋ค.
์ถ์ฒ