MVC ํจํด์ ๋ํด ์์๋ณด๋ คํ๋ค.
๋จผ์ , ํ์ต์ ํ๊ธฐ ์ ์ ์ดํด๋ฅผ ๋๊ณ ์ ๊ฐ๋จํ๊ฒ ์์๋ณด๊ธฐ ์ํด ์๋์ ๊ฐ์ด Chat GPT์ ๋ฌผ์ด๋ณด์๋ค.
3๊ฐ์ง ์์๋ก ๊ฐ๋จํ๊ฒ ์ด๋ค ์ํคํ
์ฒ์ ํจํด์ ๊ฐ์ง๊ณ ์๋์ง๋ก ์๋ ค์ฃผ์๋ค. ์ด์ ์ด์ ๋ํด์ ์กฐ๊ธ์ ๋ ๊น๊ฒ ์์๋ณด๊ณ ์ ํ๋ค.
MVC ํจํด์ '๋์์ธํจํด' ์ค์ ํ๋์ด๋ค.
๋ผ๊ณ ์๋ฌธ์ ๊ฐ์ง์ ์์ ๊ฒ์ด๋ค. ๋ณธ๋ ๋์์ธ ํจํด์ ๊ฑด์ถํ์์ ๋จผ์ ์ฌ์ฉ๋์๋๋ฐ, ๊ณต๋ฒ์ ํด๋นํ๋ ๊ฒ์ ์ํํธ์จ์ด์ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ ๊ณต์ํ ํ ๊ฒ์ด๋ค.
์์์ ๋ฐ์ด๋ ์์ง๋์ด๊ฐ ํด๊ฒฐํ ๋ฌธ์ ๋ฅผ ๋ค์์ ์์ง๋์ด๋ค์ด ์ฒ๋ฆฌํ ์ ์๋๋ก ํ ๊ท์น์ด๋ฉด์ ์ด ํจํด์ ํตํด์ ๊ตฌํ์๋ค ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ํจ์จ์ ๋์ด๋ ๊ธฐ๋ฒ ์ธ ๊ฒ์ด๋ค.
์ด์ MVC ํจํด์ด ๋ฌด์์ธ์ง ๋ค์ด๊ฐ๋ณด์.
Model & View & Controller์ ์ฝ์๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ์ธ๊ฐ์ง ์ญํ ๋ก ๊ตฌ๋ถํ ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
์๋์ ๊ทธ๋ฆผ์ ๋ณด์
ํ๋ฆ์ ๊ฐ๋จํ๊ฒ ์์๋ณด์๋ฉด,
์ด์ ๊ฐ์ ํ๋ฆ์ ๋ณด๊ฒ ๋๋ฉด, ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ญํ ์ ์ง์ํ ์ ์๊ฒ ๋ ํ ๋ฐ ์ ๋ฆฌํด๋ณด์๋ฉด,
Model: ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ์ผ์ ํ๋ค๋ ๊ฒ์ ์ง์ํ ์ ์๋ค.
View: ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ๋ถ๋ถ์ ๋ด๋นํ๊ณ ์๋ค๋ ๊ฒ์ ์ง์ ๊ฐ๋ฅํ๋ค.
Controller: Model๊ณผ View ์ฌ์ด์์ ์ค๊ฐ์ ์ญํ ์ ํ๊ณ ์๋ ๊ฒ์ ์ง์ํ ์ ์๋ค.
์ด์ MVC ํจํด์ด ์ด๋ค ๊ฒ์ธ์ง, ์ด๋ค ํ๋ฆ์ผ๋ก ์ฌ์ฉ์์๊ฒ ์์ฒญ์ด ๋์์ค๋์ง ์ ์ ์์์ ๊ฒ์ด๋ค.
๋ค์์ MVC ํจํด์์์ Model, View, Controller ์ ํ๋ฆฌ์ผ์ด์ ์ญํ ์ ์กฐ๊ธ๋ ์์๋ณด๊ณ ์ ํ๋ค.
โ Model์ Controller์ View์ ์์กดํ์ง ์๋๋ค.
โก๏ธ Model๊ณ์ธต ๋ด๋ถ์ Controller์ View์ ๊ด๋ จ๋ ์ฝ๋๊ฐ ์์ฑ๋์ด ์์ผ๋ฉด ์๋๋ค.
์์ ์ฝ๋๋ ๊ฐ๋จํ ์ด๋ฆ๊ณผ ๋์ด๋ฅผ ๊ฐ์ง ํ์์ class ์ด๋ค.
์ฝ๋ ๋ด์ฉ์ ๋ค์ฌ๋ค๋ณด๋ฉด, ์ด ํด๋์ค ๋ด๋ถ์๋ View์ ํด๋น๋๊ฑฐ๋, Controller์ ํด๋น๋๋ ์ฝ๋๊ฐ ์๋ค๋ ๊ฒ์ ์์์ฐจ๋ฆด ์ ์์ ๊ฒ์ด๋ค.
์ด ๋ง์ด ์ฆ, ํด๋น ์ฝ๋๋ Controller๋ View์ ์์กดํ์ง ์๊ณ ์๋ค๋ ๊ฒ์ด๋ค.
โ View๋ Model์๋ง ์์กดํด์ผ ํ๊ณ , Controller์๋ ์์กดํ๋ฉด ์๋๋ค.
โก๏ธ View ๊ณ์ธต ๋ด๋ถ์ Model์ ๊ด๋ จ๋ ์ฝ๋๊ฐ ์์ฑ๋ ์ ์๊ณ , Controller์ ๊ด๋ จ๋ ์ฝ๋๋ ์์ผ๋ฉด ์๋๋ค.
์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด printProfile ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๋ก student๋ฅผ ๋ฐ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. student๋ ์์ ์๊ธฐํ ๋ฐ์ ๊ฐ์ด Model์ ๊ด๋ จ๋ ์ฝ๋์๋ค.
์ด๋ ๊ฒ View์๋ Model์ ๊ด๋ จ๋ ์ฝ๋๊ฐ ์กด์ฌํด๋ ์๊ด์ด ์๋ ๊ฒ์ด๋ค.
ํ์ง๋ง, ๋ค์์ ์๊ฐํ Controller์ ์ฝ๋๋ View์ ์กด์ฌํด์๋ ์๋๋ค.
๊ทธ๋ฆฌ๊ณ View์๋ ํ๊ฐ์ง ๋ ์ ์ํ ์ ์ด ์กด์ฌํ๋ค.
โ View๊ฐ Model๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋๋ฐ, ์ด๋ ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅด๊ฒ ๋ณด์ฌ์ฃผ์ด์ผํ๋ ๋ฐ์ดํฐ์ ๋ํด์๋ง ๋ฐ์์ผ ํ๋ค.
์ด๊ฒ ๋ฌด์จ ๋ง์ธ์ง ์ดํดํ๊ธฐ ์ด๋ ค์ธ ๊ฒ์ด๋ค. ์ดํด๋ฅผ ๋๊ธฐ ์ํด ์๋์ ๊ทธ๋ฆผ์ ๋ณด์.
๋ฒจ๋ก๊ทธ ํ์ ์ ๋ณด ํ์ด์ง์ธ๋ฐ, ์ฌ์ง๊ณผ ๊ฐ์ด ํ๋์ ํ์์ฒ๋ผ ์ฌ์ฉ์์๊ฒ ๋๊ฐ์ด ๋ณด์ฌ ์ค์ผ ๋๋ ๋ถ๋ถ๊ณผ ๋นจ๊ฐ์ ํ์์ฒ๋ผ ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅด๊ฒ ๋ณด์ฌ ์ค์ผ ๋๋ ๋ถ๋ถ๋ค๋ก ๋๋์ด์ ธ์๋ค.
๐ฆ ํ๋์ ์์: View์์ ์์ฒด์ ์ผ๋ก ๊ฐ์ง๊ณ ์์ด์ผํ๋ ์ ๋ณด
๐ฅ ๋นจ๊ฐ์ ์์: Model์์ ๋ฐ์์จ ์ ๋ณด
๋ค์ ๋งํ์๋ฉด, View๋ UI(๋ ์ด์์)์ Model๋ก ๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํฉ์ณ์ ธ ๋ง๋ค์ด์ง ํ๋ฉด์ด๋ค.
์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์, ๋๊ฐ์ด ๋ณด์ฌ์ค์ผ ๋๋ ๋ถ๋ถ์ Model๋ก ๋ถํฐ ๋ฐ๋ ๊ฒ์ด ์๋๋ผ View์์ ์์ฒด์ ์ผ๋ก ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ ์ ๋ณด๋ค์ด๋ผ๋ ๊ฒ์ด๋ค.
โ Controller๋ Model๊ณผ View์ ์์กดํด๋ ๋๋ค.
โก๏ธ Controller ๋ด๋ถ์๋ Model๊ณผ View์ ์ฝ๋๊ฐ ์์ ์ ์๋ค.
์์ ํ๋ฆ์์ ์ง์ํ๋ฏ์ด, Controller๋ Model๊ณผ View ์ฌ์ด์์ ์ค๊ฐ์ ์ญํ ์ ํ๊ณ ์์ผ๋ฉด์, ์ ์ฒด ๋ก์ง์ ๊ตฌ์ฑํ๊ธฐ ๋๋ฌธ์ด๋ค.
โ View๊ฐ Model๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋๋, ๋ฐ๋์ Controller์์ ๋ฐ์์ผ ํ๋ค.
์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด Model์ธ Student ํด๋์ค๋ก๋ถํฐ ํ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์ฌ View์ printProfile method์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๋ ๊ฒ์ ํ์ธํด ๋ณผ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด MVC ํจํด์ ์ฌ์ฉํ๋ฉด ์ด๋ค ๊ฒ์ด ์ข์๊น?
MVC ํจํด์ ์ฌ์ฉํ๊ฒ๋๋ฉด ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ก๋ถํฐ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ฝ๊ฒ ๊ณ ์น ์ ์๋, ์ฆ, ์ ์ง๋ณด์ ์ ์ฉ์ดํ ์ฅ์ ์ด ์์ ๊ฒ์ด๋ค.
๐๐ป ๊ธฐ๋ฅ๋ณ๋ก ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ์ฌ ํ๋์ ํ์ผ์ ์ฝ๋๊ฐ ๋ชจ์ด๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์๊ณ , ์ฝ๋์ ์ฌ์ฌ์ฉ์ด ์ฆ๊ฐ ํ ์ ์๋ค.
๐ ๊ฐ ๊ตฌ์ฑ ์์๋ค์ ๋ ๋ฆฝ์ํด์ผ๋ก์, ํ์ ์ด ์ด๋ฃจ์ด์ง๋ ๋งก์ ๋ถ๋ถ์ ์ง์คํ ์ ์์ด ๊ฐ๋ฐ์ ํจ์จ์ฑ์ ๋์ฌ ์ค์ ์๋ค.
Model๊ณผ View๋ ์๋ก์ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ง ์๋ ๋
๋ฆฝ์ ์ธ ์ํ๋ผ๊ณ ํ์ง๋ง Model๊ณผ View์ฌ์ด์๋ Controller๋ฅผ ํตํด ์ํต์ ์ด๋ฃจ๊ธฐ ๋๋ฌธ์ ์์กด์ฑ์ด ์๋ฒฝํ๊ฒ ๋ถ๋ฆฌ๋ ์ ์๋ค. ๊ทธ๋์ ๋ณต์กํ ๋๊ท๋ชจ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ ๋ค์์ View์ Model์ด ์กด์ฌํ๊ฒ ๋๊ณ , ์ด๋ Controller๋ฅผ ํตํด์ ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ Controller๊ฐ ๋ถํ์ํ๊ฒ ์ปค์ง๋ ํ์์ด ๋ฐ์ํ๊ฒ ๋ ์ ์๋ค.
์ด๋ฌํ ํ์์ Massive-View-Controller ํ์์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด์ MVP, MVVM, Flux, Redux ๋ฑ์ ๋ค์ํ ํจํด์ด ์๊ฒจ๋ ๊ฒ์ด๋ค.
๊ฒฐ๊ตญ MVC ํจํด์ ์ด๋ป๊ฒ ํ๋ฉด ๋ด๊ฐ ๊ฐ๋ฐํ๋ ค๋ ํ๋ก์ ํธ๋ฅผ ์ ๋๋ ๊ฒ์ธ์ง๋ฅผ ๊ณ ๋ฏผํ๊ฒ ํ๋ ๊ตฌ์กฐ์ธ ๊ฒ ๊ฐ๋ค. ์ฐ๋ฆฌ๊ฐ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ์ ์์ ์ด๋ค ๋ถ๋ถ๋ค์ ๊ฐ๋ฐํ ์ง ๋๋ ์ ๋๋ ๋ถ๋ถ์ ๊ฐ๊ฐ ์ญํ ๊ณผ ์ฑ
์์ ๋๋ฏ์ด, ์ด ํจํด๋ ์ด๋ค ํน์ ์ญํ ๋ค์ ๋ํด ๋ถ๋ด์ ํ ๋ ๊ฐ์ด๋๋ผ์ธ์ ์ ์ํ๋ ๋ฐฉ๋ฒ์ค์ ์ ํํ(?)๋๋ฉด์ ์ฌ์ฉ๋ ๊ฒ์ด ์๋๊ฐ ํ๋ ์๊ฐ์ด ๋ค์๋ค.
์ฐ๋ฆฌ๋ ์ฌ๋์ด๋๊น ๋ด๊ฐ ์ด ์ฝ๋๋ ์ค๋ ์๊ฐ์ด ์ง๋๋ฉด ์ฐพ๊ธฐ๊ฐ ์ด๋ ต๊ณ , ๊ณผ๊ฑฐ์ ๋ด๊ฐ ์ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋์ง ์๋ฌธ์ด ์๊ธธ ๋๊ฐ ๋ง์ ๊ฒ์ด๋ผ ์๊ฐํ๋ค.
๋๋ฌธ์, ๊ผญ ๋ด๊ฐ ๊ฐ๋ฐํ๋ ค๋ ์ฝ๋๊ฐ MVC ํจํด์ด ์๋๋๋ผ๋ ๋ณต์กํ ์ฝ๋๋ฅผ ์ฝ๊ฒ ์ฐพ์๊ฐ๊ณ ์ถ๊ฐํ๋๋ฐ ์ต์ํด์ง ํ์๊ฐ ์๋ค๊ณ ์๊ฐ์ด ๋ค์๋ค.
๐บ ์ฐ์ํ 10๋ถ ํ
์ฝํก: ์ ๋ฆฌ์ MVC ํจํด
๐จ๐ปโ๐ป seongwon97๋์ ๋ธ๋ก๊ทธ