MVC ํจํด
MVC ํจํด์ด๋ Model-View-Controller์ ์๊ธ์๋ง ๋ฐ์จ ์ฝ์๋ก, ์ฌ์ฉ์ ์ธํฐํ์ด์ค, ๋ฐ์ดํฐ ๋ฐ ๋ ผ๋ฆฌ ์ ์ด๋ฅผ ๊ตฌํํ๋๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ํํธ์จ์ด ๋์์ธ ํจํด์ด๋ค.
๋์์ธ ํจํด์ด๋? ํ๋ก๊ทธ๋จ์ด๋ ์ด๋ค ํน์ ํ ๊ฒ์ ๊ฐ๋ฐํ๋ ์ค์ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋ค์ ์ ๋ฆฌํด์ ์ํฉ์ ๋ฐ๋ผ ๊ฐํธํ๊ฒ ์ ์ฉํ์ฌ ์ธ ์ ์๋ ๊ฒ์ ์ ๋ฆฌํ ๊ท์ฝ
ํด๋น ํจํด์ ์ํํธ์จ์ด์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ํ๋ฉด์ ๊ตฌ๋ถํ๋๋ฐ ์ค์ ์ ๋๊ณ ์๋ค. ์ฆ, ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํจ์ ์์ด์ ๊ตฌ์ฑ ์์๋ฅผ ์ธ ๊ฐ์ง ์ญํ ๋ก ๋๋์ด ๊ตฌ๋ถํ ๊ฒ์ด๋ค. ์ธ ๊ฐ์ง ์ญํ ์
- ๋ชจ๋ธ(Model) : ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง ๊ด๋ฆฌ
- ๋ทฐ(View) : ๋ ์ด์์๊ณผ ํ๋ฉด ์ฒ๋ฆฌ
- ์ปจํธ๋กค๋ฌ(Controller) : ๋ชจ๋ธ๊ณผ ๋ทฐ๋ก ๋ช ๋ น์ ์ ๋ฌ ๋ก ๊ตฌ๋ถ๋๋ค
์์ ๊ทธ๋ฆผ์ฒ๋ผ ์๋ก์ ๊ด๊ณ๊ฐ ์ ์๋์ด ์๋ค.
๊ฐ๊ฐ์ ์์์ ๋ํด์ ์์ธํ ์์๋ณด์
๋ชจ๋ธ(Model)
์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ณด, ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ธ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์์, ์ด๊ธฐํ๊ฐ, ๋ณ์ ๋ฑ์ ๋ปํ๋ฉฐ, ์ด๋ฌํ ์ ๋ณด๋ค์ ๊ฐ๊ณตํ๋ ์ญํ ์ ํ๋ค.
๊ท์น
- ์ฌ์ฉ์๊ฐ ํธ์งํ๊ธธ ์ํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํจ
- ๋ทฐ๋ ์ปจํธ๋กค๋ฌ์ ๋ํด์ ์ด๋ค ์ ๋ณด๋ ์์ง ๋ง์์ผ ํจ
- ๋ทฐ๋ฅผ ์ฐธ์กฐํ๋ ๋ด๋ถ ์์ฑ๊ฐ์ ์ง๋๋ฉด ์๋จ
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด, ๋ณ๊ฒฝ ํต์ง์ ๋ํ ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ ๊ตฌํ
- ์ ๋ณด ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด, ์ด๋ฒคํธ๋ฅผ ๋ฐ์์์ผ ์ ๋ฌํ๊ณ , ์ด๋ฅผ ๋ทฐ์์ ์์ ํ์ฌ ์ฒ๋ฆฌํ๊ฑฐ๋ ํ๋ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ์์ด์ผ ํจ
- ๋ชจ๋ธ์ ์ฌ์ฌ์ฉ๊ฐ๋ฅํด์ผ ํ๋ฉฐ ๋ค๋ฅธ ์ธํฐํ์ด์ค์์๋ ๋ณํ์ง ์์์ผ ํจ
๋ทฐ(View)
์ฌ์ฉ์ ui๋ฅผ ๋ด๋นํ๋ ์์์ด๋ค. ๋ฐ์ดํฐ ๋ฐ ๊ฐ์ฒด์ ์ ๋ ฅ, ์ถ๋ ฅ์ ๋ด๋นํ๋ค. ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์๋ค์ด ๋ณผ ์ ์๋ ํ๋ฉด์ด๋ค. ์ฆ, ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ธ๋ก๋ถํฐ ๋ฐ์ ์ถ๋ ฅํ๋ค.
๊ท์น
- ๋ชจ๋ธ์ด ๊ฐ์ง๊ณ ์๋ ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ ์ฅํด์๋ ์๋จ
- ์์์ ๋ทฐ ๋ด๋ถ์ ์ ์ฅ ๊ธ์ง
- ๋ชจ๋ธ์ด๋ ์ปจํธ๋กค๋ฌ์ ๊ฐ์ด ๋ค๋ฅธ ๊ตฌ์ฑ์์๋ค์ ๋ชฐ๋ผ์ผ ํจ
- ๋ชจ๋ธ๊ณผ ๊ฐ์ ์๊ธฐ ์์ ์ ์ ์ธํ๊ณ ๋ค๋ฅธ ์์๋ค์ ์ฐธ์กฐ๋ ๋์์ ๋ชจ๋ฆ
- ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ผ๋ฉด ๋จ์ํ ํ๋ฉด์ ํ์๋ง ํจ
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด ๋ณ๊ฒฝ ํต์ง์ ๋ํ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ ๊ตฌํ
- ๋ชจ๋ธ๊ณผ ๊ฐ์ด ๋ณ๊ฒฝ์ด ์ผ์ด๋ฌ์ ๋ ๋ณ๊ฒฝ์ ์๋ ค์ค์ผ ํ๋ ๋ฐฉ๋ฒ ๊ตฌํ
- ์ฌ์ฌ์ฉ๊ฐ๋ฅํ๊ฒ๋ ์ค๊ณ
์ปจํธ๋กค๋ฌ(Controller)
์ปจํธ๋กค๋ฌ๋ ๋ฐ์ดํฐ์ ui(์ฌ์ฉ์ ์ธํฐํ์ด์ค) ์์๋ค์ ์๋ ๋ค๋ฆฌ ์ญํ ์ด๋ค. ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ํด๋ฆญํ๋ฉด ์์ ํ๋ ๊ฒ์ ๋ํ ์ด๋ฒคํธ๋ค์ ์ฒ๋ฆฌํ๋ค
๊ท์น
- ๋ชจ๋ธ์ด๋ ๋ทฐ์ ๋ํด์ ์๊ณ ์์ด์ผ ํจ
- ๋ชจ๋ธ์ด๋ ๋ทฐ๋ ์๋ก ๋ชจ๋ฅด์ฆ๋ง ์ปจํธ๋กค๋ฌ๋ ๊ทธ ์ฌ์ด์ ๋์ ๋ชจ๋ ์๊ณ ์๋ ์ํ์์ ๋ณ๊ฒฝ์ ์ธ๋ถ๋ก ์๋ฆฌ๊ฑฐ๋ ์์ ํ ์ ์์ด์ผ ํจ
- ๋ชจ๋ธ์ด๋ ๋ทฐ์ ๋ณ๊ฒฝ์ ๋ชจ๋ํฐ๋ง ํด์ผํจ
์ฅ์
์ด๋ฌํ 3๊ฐ์ ๊ตฌ์ฑ ์์๋ก ๋๋์ด ๋์ํ๋ ์น ์๋ฒ์ ๊ตฌ์กฐ๋ฅผ ํ์ฉํ๋ฉด ๊ฐ์ง๋ ์ฅ์ ๋ค์ด ๋๋ ทํ๋ค.
- ์ ์ง๋ณด์์ฑ ํฅ์
- ๋ชจ๋ธ, ๋ทฐ, ์ปจํธ๋กค๋ฌ๊ฐ ๋ช ํํ๊ฒ ๋๋์ด์ ธ ์์ด ์ฝ๋์ ์์ ์ด๋ ํ์ฅ์ด ์ฉ์ดํ๋ค
- ์ ์ง๋ณด์๊ฐ ํ์ํ ๋ถ๋ถ์ ์ง์ด ํด๋น ๋ถ๋ถ๋ง ์์ ํ๋ฉด ๋จ
- ๊ฐ๋ฐ์ ๋ณ๋ ฌ์ฑ ์ฆ๊ฐ
- ๋ฐ๋ก๋ฐ๋ก ๊ฐ๋ฐ์ด ๊ฐ๋ฅํด์ ํ์ ์ ํ ๊ฒฝ์ฐ ๊ฐ๋ฐ์ ๋ถ์ ํ๊ฐ ์ ์ด๋ฃจ์ด์ง ์ ์์
- ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ถ๊ฐ ๋ฐ ํ์ฅ ๊ฐ๋ฅํ๋ค
- ๊ฐ๊ฐ์ ์์์ ๋ง์ถ์ด ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋๋ค
- ํ
์คํธ ์ฉ์ด์ฑ
- mvc ํจํด์ ๊ฐ ์ปดํฌ๋ํธ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋๋ก ์ค๊ณ๋์๊ธฐ ๋๋ฌธ์ ๋จ์ ํ ์คํธ๋ฅผ ์ํํ๊ธฐ ์ฌ์
- ์ฝ๋์ ๋ช
ํํ ๊ตฌ์กฐ
- ์ฝ๋์ ๊ตฌ์กฐ๊ฐ ๋ช ํํด์ง
- ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์
- ์ค๋ณต ์ฝ๋ ๊ฐ์
- ์ค๋ณต ์ฝ๋๋ฅผ ํ๋๋ก ๋ฌถ์์ผ๋ก์จ ์ฌ์ฌ์ฉ์ด ์ฉ์ดํ๊ณ ์ฝ๋์ ์ค๋ณต์ด ์ฌ๋ผ์ง
์ฐธ์กฐ
https://developer.mozilla.org/ko/docs/Glossary/MVC https://m.blog.naver.com/jhc9639/220967034588