MVC ํจํด
๐ก ํ๋ก๊ทธ๋จ์ ๊ฐ๊ฐ์ ์ญํ ์ ๋ฐ๋ผ Model, View, Controller๋ก ๋๋์ด ์ค๊ณํ ์ํคํ
์ฒ ํจํด์ด๋ค.
์ํํธ์จ์ด์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ํ๋ฉด์ ๊ตฌ๋ถํ๋๋ฐ ์ค์ ์ ๋๊ณ ์์ผ๋ฉฐ ์ด๋ฌํ "๊ด์ฌ์ฌ ๋ถ๋ฆฌ" ๋ ๋๋์ ์
๋ฌด์ ๋ถ๋ฆฌ์ ํฅ์๋ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค.

Model
โ๏ธํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ, ํ
์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ก์ง ๋ด๋น
- ๋ชจ๋ ๋ฐ์ดํฐ์ ๋ํ ์ ๋ณด๋ฅผ ์๊ณ ์๊ณ , ์ด ์ ๋ณด๋ค์ ๊ฐ๊ณต ํ ์ ์์ด์ผ ํ๋ค.
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด ๋ณ๊ฒฝ ํต์ง์ ๋ํ ๋ก์ง๋ง ํฌํจ๋์ด ์์ด์ผํ๋ค. (์ง์ ์ ์ธ UI ๋ณ๊ฒฝ X)
- ๋ชจ๋ธ์ ์ฌ๋ฌ๊ฐ์ ๋ทฐ๋ฅผ ๊ฐ์ง ์ ์๋ค.
- ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ๋ํด ์์ง ๋ชปํ๋ค.
View
โ๏ธ๋ ์ด์์๊ณผ ํ๋ฉด์ ์ฒ๋ฆฌํ๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ ์ ์ํ๋ค.
- ๋ทฐ๋ ํญ๋ชฉ์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ๋ฐฉ์์ ์ ์ํ๋ฉฐ, ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ธ๋ก๋ถํฐ ๋ฐ๋๋ค.
- ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ๋ํด ์์ง ๋ชปํ๋ค.
Controller
โ๏ธ์
๋ ฅ์ ๋ํ ์๋ต์ผ๋ก ๋ชจ๋ธ ๋ฐ/๋๋ ๋ทฐ๋ฅผ ์
๋ฐ์ดํธํ๋ ๋ก์ง์ ํฌํจํ๋ค.
- Model๊ณผ View ์ฌ์ด์ ์๋ ์ปดํฌ๋ํธ์ด๋ค.
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ผ๋ฉด ํด๋น ์์ฒญ์ ๋ํ ์ค์ ์
๋ฌด๋ฅผ ์ํํ๋ Model์ ํธ์ถํ๋ค.
- Model์ด ์
๋ฌด ์ํ์ ์๋ฃํ๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ ํ๋ฉด์ ์์ฑํ๋๋ก View์ ์ ๋ฌํ๋ค.
- ์ฆ, ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํด Model๊ณผ View๋ฅผ ๊ฒฐ์ ํ์ฌ ์ ๋ฌํ๋ ์ค์ฌ์ ์ญํ ์ ํ๋ค.
- ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํํ๋ก ๋ํ๋ด๊ธฐ ์ํด ๋ชจ๋ธ์ ์
๋ฐ์ดํธ ํ์ง ์๊ณ ๋ทฐ๋ฅผ ์
๋ฐ์ดํธ ํ ์๋ ์๋ค.
ex) ํญ๋ชฉ์ ์ํ๋ฒณ์์๋ก ์ ๋ ฌํ๋ค๊ฑฐ๋, ๊ฐ๊ฒฉ์ด ๋ฎ์ ์์ ๋๋ ๋์ ์์๋ก ์ ๋ ฌ
- ๋ค๋ฅธ ์ปดํฌ๋ํธ์ธ Model๊ณผ View๊ฐ ๋ฌด์์ ์ํํ๋์ง ์๊ณ ์๋ค.
๋์ ์์
- ์ฌ์ฉ์์ Action์ View๋ฅผ ํตํด ๋ค์ด์จ๋ค.
- ์ฌ์ฉ์์ Action๋ค์ Controller์ ๋ค์ด์จ๋ค.
- Controller๋ ์ฌ์ฉ์์ Action๋ฅผ ํ์ธํ๊ณ , Model์ ์
๋ฐ์ดํธํ๋ค.
- Controller๋ Model์ ๋ํ๋ด์ค View๋ฅผ ์ ํํ๋ค.
- View๋ Model์ ์ด์ฉํ์ฌ ํ๋ฉด์ ๋ํ๋ธ๋ค. (Controller๋ฅผ ์ด์ฉํ์ฌ ์
๋ฐ์ดํธ ํ๊ธฐ๋ ํ๋ค.)
์ถ์ฒ: https://beomy.tistory.com/43 [beomy]
MVC ํจํด์ ์ฌ์ฉํ๋ ์ด์
- ์ ์ ๋ฆฌ๋ ์ฝ๋ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ
- MVC๊ฐ ํผ์ฌ๋์ด ์๋ ์ฝ๋ ์คํ๊ฒํฐ ์ฝ๋๋ณด๋ค ์ ์ง๋ณด์, ํ์ฅ์ฑ, ์ฌ์ฌ์ฉ์ฑ์ด ๋๋ค.
MVC๋ชจ๋ธ์ ํ๊ณ
- ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ค๊ณ๋ฅผ ์ํด ๋ง์ ํด๋์ค๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ณต์กํ ์ ์๋ค.
- View์ Model์ ์์กด์ฑ์ ์๋ฒฝํ ๋ถ๋ฆฌ ํ ์ ์๊ธฐ ๋๋ฌธ์ ํจํด์ด ๋ชจํธํด์ง ์ ์๋ค.
- View์ Model์ ๋์ ์์กด์ฑ์ ์ดํ๋ฆฌ์ผ์ด์
์ด ์ปค์ง์๋ก ๋ณต์กํด์ง๊ณ ์ ์ง๋ณด์๊ฐ ์ด๋ ต๊ฒ ๋ง๋ ๋ค.
๋๊ท๋ชจ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ๊ฒฝ์ฐ ๋ค์์ View์ Model์ด Controller๋ฅผ ํตํด ๋ณต์กํ๊ฒ ์ฐ๊ฒฐ๋ ์ ์๋ค.
Controller๋ฅผ ํตํด View์ Model๊ฐ์๋ ๊ด๊ณ๊ฐ ๋ณต์กํ๊ฒ ์ฐ๊ฒฐ๋ ์ ์์ด ๋ณต์กํ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ ํผ๋์ค๋ฝ๊ฒ ๋ง๋ค ์ ์๋ค.
- Model๊ณผ View Controller๊ฐ ๋์จํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋๋ผ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ํ
์คํธํ๋ ค๋ฉด View์ Controller์ ๋ํ ํ
์คํธ๋ ์ํํด์ผํ๋ค. ๋ฐ๋ผ์ ๋จ์ ํ
์คํธ๋ฅผ ํ๊ธฐ ์ด๋ ค์์ง๋ค.
โ๏ธ ์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์ํ ๋์์ธ ํจํด์ ํ์์์ผฐ๋ค. ๊ทธ ์ค ํ๋๊ฐ MVVM ํจํด์ด๋ค.
MVVM ํจํด
๐ก MVVM์ MVC๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ํคํ
์ฒ ํจํด์ด๋ค. ์ดํ๋ฆฌ์ผ์ด์
๋น์ง๋์ค ๋ก์ง๊ณผ UI ๊ฐ๋ฐ์ ๋ ๋ช
ํํ๊ฒ ๊ตฌ๋ถํ๋๋ฐ ๋์์ด ๋๋ค. View์ ๋ค๋ฅธ ๊ณ์ธต๊ฐ์ ์์
์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ์ ์ธ์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ๋ค. MVC์ MVVM์ ๊ฒฐ์ ์ ์ธ ์ฐจ์ด๋ ViewModel์ด๋ค.

View์ Model์ MVCํจํด๊ณผ ๊ฑฐ์ ๋์ผํ๋ค.
ViewModel
- ๋ทฐ์ ๊ด๋ จ ๋ชจ๋ธ ์ฌ์ด์ ๋ณํ๋ฅผ ์กฐ์ ํ๋ ๋ทฐ์ ์ถ์์ ์ธ ๊ฐ๋
์ด๋ค.
- Command ํจํด๊ณผ Data Binding์ ์ด์ฉํ์ฌ View์ View Model ์ฌ์ด์ ์์กด์ฑ์ ์์ด๋ค.
Command ํจํด
: ๋ทฐ์์ UI๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ทฐ ๋ชจ๋ธ์ ์ ๋ฌํ๋ ์๊ตฌ ์ฌํญ์ ์บก์ํํ ๊ฒ
Data Binding
: ๋ทฐ์ ๋ทฐ ๋ชจ๋ธ ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํ์ํค๋ ๊ฒ
- Controller์ ๋ฌ๋ฆฌ ์ด๋ฒคํธ๊ฐ ์๋๋ผ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ํตํด ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ์
๋ฐ์ดํธ ํ๋ค.

MVVM ํจํด์ ์ฌ์ฉํ๋ ์ด์
- UI๊ฐ ์ค์ ์ฝ๋์ ๊ฑฐ์ ์๋ฒฝํ๊ฒ ๋ถ๋ฆฌ๋ ๊ฒ์ด ํน์ง์ด๋ค. ๋๋ถ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ก์ง๊ณผ UI ๋์์ธ ๊ฐ ์ํธ ์ํฅ์ด ์ ์ด ๊ฐ๋ฐ์ด ์ฉ์ดํ๋ค.
- ๊ฐ๋ฐ์์ UI ๋์์ด๋ ๊ฐ์ ํ์
์ด ์ฉ์ดํ๋ค.
- MVVM์ ๋์์ธ๊ณผ ๊ทธ ๋์๊น์ง ์ฌ์ฌ์ฉํ๊ธฐ ์ ๋ฆฌํ๋ค.
MVVM ํจํด์ ํ๊ณ
- Binding ๊ธฐ์ ๋ฑ์ด ํ๋ ์์ํฌ ํนํ์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ก์ ์ฌ์ฌ์ฉ์ ์ด๋ ต๋ค.
- View Model์ ์ค๊ณ๊ฐ ์ฝ์ง ์๋ค.
์ฐธ๊ณ : https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC
https://medium.com/@jang.wangsu/%EB%94%94%EC%9E%90%EC%9D%B8%ED%8C%A8%ED%84%B4-mvc-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80-1d74fac6e256
https://beomy.tistory.com/43
https://tomyrhymond.wordpress.com/2011/09/16/mvc-mvp-and-mvvm/