written by sohyeon, hyemin ๐ก
MVC๋, Model View Controller์ ์ฝ์๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ๊ฐ์ง ์ญํ ๋ก ๊ตฌ๋ถํ ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค.
๊ฐ๋ตํ๊ฒ ์ญํ ์ ๊ตฌ๋ถํ์๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
- Model: ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ, ์๋ฃ
- View: ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ๋ถ๋ถ
- Controller: Model๊ณผ View์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ์ญํ
์ด๋ ๊ฒ ๊ฐ์์ ์ญํ ์ ๋ถ๋ฆฌํจ์ผ๋ก์ ์ ์ง ๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ณ ํ๋ก๊ทธ๋จ์ ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ์ ์ํ๋ค. (Uses)
Controller
๋ ์ฌ์ฉ์๊ฐ ์์ฒญํ ์นํ์ด์ง๋ฅผ ์๋น์ค ํ๊ธฐ ์ํด์ ๋ชจ๋ธ์ ํธ์ถํ๋ค. (Manipulates)Model
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ์ผ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ ์ดํ ํ์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํ๋ค.Controller
๋Model
์ด ๋ฆฌํดํ ๊ฒฐ๊ณผ๋ฅผ View์ ๋ฐ์ํ๋ค. (Updates)- ๋ฐ์ดํฐ๊ฐ ๋ฐ์๋
VIew
๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ค. (Sees)
Model
์ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ฉฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค, ์์, ๋ฌธ์์ด๊ณผ ๊ฐ์ ๋ณ์๋ค, ๋น์ ํ๋ก๊ทธ๋จ์ด๋ผ๋ฉด ์นด๋ฉ๋ผ ์ ๋ณด์ ๊ฐ์ ๊ฒ๋ค์ด ํด๋น๋ฉ๋๋ค.
Model
์๋ View
๋ Controller
์ ์ ๋ณด๊ฐ ์ ํ ์๊ณ ์ ๋ณด๋ง ๋ฐํํ๊ฑฐ๋ ์ค์ ํฉ๋๋ค.
VIew
๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ UI์ ์์๋ค์ ์๋ฏธํฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์ ์ดํ๊ณ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์๋ ์์ญ์
๋๋ค.
VIew
์์๋ ๋ณ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ์ง ์๊ณ ์
๋ ฅ๋ฐ๊ณ ์ถ๋ ฅํด์ฃผ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ Model
์ ํ์ฉํ๊ฒ ๋ฉ๋๋ค.
Controller
๋ Model
๊ณผ View
๋ฅผ ์ด์ด์ฃผ๋ ๋ค๋ฆฌ ์ญํ ์ ์ํํฉ๋๋ค.
์ฌ์ฉ์๊ฐ View
์์ ์ด๋ค ํ๋์ ํ์ ๋ ๊ทธ ๋ด๋ถ์ ์ธ ์ฒ๋ฆฌ๋ Controller
์์ ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ํ์ฅ์ฑ ์ฆ๊ฐ
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ์ฑ ์ฆ๊ฐ
- ๊ฐ์์ ๋ชฉ์ ์ ๋ง๋ ๋ถ๋ฆฌ๋ ์ฝ๋๋ฅผ ํตํด ์ค๋ณต ์ต์ํ
-
View
์Model
์ ์์กด์ฑ์ผ๋ก ์ธํด ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง ์ ์๋ค.Model์ ๋ค์์ View๋ฅผ ๊ฐ์ง ์ ์๊ณ ๋ฐ๋๋ก Controller๋ฅผ ํตํด ํ View์ ์ฐ๊ฒฐ๋๋ Model๋ ์ฌ๋ฌ๊ฐ๊ฐ ๋ ์ ์๋ค.
์ด๋ฐ ๊ด๊ณ๋ View์ Model์ ์์กด์ฑ์ ๋์ด๊ฒ ๋๋ค. ์ข์ ์ค๊ณ๋ก ์์กด์ฑ์ ์ค์ผ ์๋ ์๊ฒ ์ง๋ง
Controller์ ๋ค์์ Model๊ณผ View๊ฐ ์ฐ๊ฒฐ๋๋ ๋ณต์กํ ์ํฉ์ด ์ ๋ฐ ๋๋ ์ํฉ์ ํผํ๊ธฐ๋ ์ฝ์ง์๋ค.๊ฒฐ๊ตญ, MVC ๊ท๋ชจ๊ฐ ๋น๋ํด์ง๊ณ ๋ณต์กํด์ง๋ฉฐ ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋๋ง๋ค ์์กด์ฑ์ ์ผ์ผ์ด ํด๊ฒฐํด์ผ ํ๋ ์ํฉ์ด ์ค๊ฒ ๋๋ค.
์ด๋ฐ ํํ์ MVC๋ฅผ MassiveViewController๋ผ๊ณ ๋ถ๋ฅธ๋ค. MVC์ ํ๊ณ๋ฅผ ํํํ๋ ์ฉ์ด์ด๊ธฐ๋ ํ๋ค.
๋ฌผ๋ก MVC๊ฐ ๊ฐ๋ ๋ช
๋ฃํ ์ฅ์ ๋ ์์ง๋ง,
Controller๊ฐ View์ ๊ฐํ ์์กด์ฑ์ ๊ฐ์ง์ผ๋ก์ ๋ฐ์ํ๋ ํ๊ณ์ ์ ์ธ์งํ๊ณ
์ ์ ํ ์ํฉ์ MVC๋ฅผ ์ ์ฉํ ์ ์์ด์ผ ํ๋ค.
๋ํ MVC๋ก ๋ถํฐ ํ์๋ ๋ค๋ฅธ ํจํด๋ค์ ํ์ฉํ๋ ๋ฐฉ์๋ ๊ณ ๋ฏผํด ๋ณด์์ผ ํ๋ค.