MVC, MVP, MVVM pattern
MVC pattern
Model, View, Controller ๋ก ์ด๋ฃจ์ด์ง ๋์์ธ ํจํด์ ์๋ฏธํฉ๋๋ค.
๋ชจ๋ธ์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์์, ๋ณ์๋ฅผ ์๋ฏธํฉ๋๋ค.
๋ทฐ๋ ๋ง ๊ทธ๋๋ก ์ฌ์ฉ์๊ฐ ๋ณด๋ ์ฒดํฌ๋ฐ์ค, ํ ์คํธ ์ ๋ ฅ์ฐฝ ๋ฑ์ ์ธํฐํ์ด์ค ์์๋ฅผ ๋ํ๋ด๋ฉฐ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ ํ๋ฉด์ ๋ปํฉ๋๋ค.
๋ชจ๋ธ์ด ๊ฐ์ง๊ณ ์๋ ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ ์ฅํ๊ณ ์์ง ์๊ณ ,
๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ฉด ๋ฐ๋ก ์ปจํธ๋กค๋ฌ์๊ฒ ์ด๋ฅผ ์ ๋ฌํฉ๋๋ค.
์ปจํธ๋กค๋ฌ๋ ๋ทฐ์ ๋ชจ๋ธ ์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ์ง๊ฒ๋ค๋ฆฌ ์ญํ ์ ํ๋๋ฐ, ์ฃผ๋ก ๋ฉ์ธ ๋น์ฆ๋์ค ๋ก์ง์ด ์กด์ฌํฉ๋๋ค. ๋ทฐ์ ๋ชจ๋ธ์ ์์ฑ๊ณผ ์๋ฉธ ์ฃผ๊ธฐ์ธ ์๋ช ์ฃผ๊ธฐ๋ ๊ด๋ฆฌํ๊ณ ๋ชจ๋ธ์ด๋ ๋ทฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ด๋ฅผ ์ฐ๊ด๋ ์์๋ค์๊ฒ ์๋ ค์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
๋ทฐ์์ ๋ฐ์ดํฐ๊ฐ ์์ฑ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋๋ฉด ์ด ์ ๋ณด๊ฐ ์ปจํธ๋กค๋ฌ์๊ฒ ์ ๋ฌ๋๊ณ ์ปจํธ๋กค๋ฌ๋ ์ด๋ฅผ ํตํด ๋ชจ๋ธ์ ์์ฑํ๊ฑฐ๋ ๋ณ๊ฒฝํฉ๋๋ค.
์ฅ์
Model, View, Controller ๋ฑ ์ดํ๋ฆฌ์ผ์ด์ ๋ด๋ถ์ ์ธ๋ถ ๊ตฌ์ฑ์์๋ก ์ญํ ์ ๋๋ด๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฐ ์์ ์ ์ญํ ์๋ง ์ถฉ์คํ๊ฒ ๊ฐ๋ฐํ๋ฉด ๋ฉ๋๋ค.
์ฌ ์ฌ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ์ด ๋์ต๋๋ค.
๋จ์
์ดํ๋ฆฌ์ผ์ด์ ์ด ํฌ๊ณ ๋ณต์กํด์ง์๋ก ๋ชจ๋ธ๊ณผ ๋ทฐ์ ๊ด๊ณ๊ฐ ๋ณต์กํด์ง๋๋ค.
MVP pattern
MVC ํจํด์์ Controller ๊ฐ Presenter ๋ก ๋ณ๊ฒฝ๋ ํจํด์ ๋๋ค.
์ด๋ ํ๋ ์ ํฐ๋ ๋ทฐ์ 1:1 ๊ด๊ณ์ด๋ฏ๋ก MVC๋ณด๋ค ๊ฒฐํฉ์ฑ์ด ๋์ฑ ๊ฐํด์ง๋๋ค.
MVVP pattern
MVC ํจํด์์ Controller ๊ฐ View Model ๋ก ๋ฐ๋ ํจํด์ ๋งํฉ๋๋ค.
VM์ ๋ทฐ๋ฅผ ์ถ์ํํ ๊ณ์ธต์ด๊ณ
VM : V = 1 : N ๊ด๊ณ๋ฅผ ๊ฐ์ต๋๋ค.
VM์ ์ปค๋งจ๋์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ญํ ์ ์ํํฉ๋๋ค.
์ปค๋งจ๋ : ์ฌ๋ฌ ์์์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ๋์ ์ก์ ์ผ๋ก ์ํํ ์ ์๋ ๊ธฐ๋ฒ
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ : ํ๋ฉด์ ๋ณด์ด๋ ๋ฐ์ดํฐ์ ๋ธ๋ผ์ฐ์ ์์ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฐ์ดํฐ๋ฅผ ์ผ์น์ํค๋ ๊ฒ
๋ํ์ ์ธ MVVM ํจํด์ ํ๋ ์์ํฌ๋ก vue.js ๊ฐ ์์ต๋๋ค.
๋ํ์ ์ธ ์ : Spring WEB MVC
์ฌ์ฉ์(ํด๋ผ์ด์ธํธ)์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋์คํจ์ฒ ์๋ธ๋ฆฟ์ด ๊ฐ์ฅ ๋จผ์ ์ด๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค.
๋์คํจ์ฒ ์๋ธ๋ฆฟ์ ์ด๋ค ์ปจํธ๋กค๋ฌ๊ฐ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ฉด ์ข์์ง ๊ฒฐ์ ํ๋๋ฐ์. ์ฃผ๋ก @RequestMapping ์ฐธ๊ณ ํด์ ๊ฒฐ์ ํฉ๋๋ค.
Controller ๋ก ์ ํด์ง ์์ฒญ์ ๋ด๋ถ์์ ์๋น์ค, ๋ฆฌํฌ์งํ ๋ฆฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ์กฐํ ๋ฐ ๊ฐ๊ณตํ๊ณ ์ ์ ํ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค.
๊ทธ ๊ฒฐ๊ณผ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ ๋ชจ๋ธ์ด ์์ฑ๋๊ณ
๋ทฐ๋ฅผ ๊ตฌํํ๊ธฐ ์ํ view resolver ๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค.
๊ทธ ์ ๋ณด๋ฅผ ์ฐธ๊ณ ํด์ view ๊ฐ ๋ ๋๋ง ๋๋ฉด
๋ง์นจ๋ด ์๋ต ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด๋ผ ์ ์๊ฒ ๋ฉ๋๋ค.
Last updated