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

  1. ์‚ฌ์šฉ์ž(ํด๋ผ์ด์–ธํŠธ)์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์ด ๊ฐ€์žฅ ๋จผ์ € ์ด๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  2. ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์€ ์–ด๋–ค ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ข‹์„์ง€ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ์š”. ์ฃผ๋กœ @RequestMapping ์ฐธ๊ณ ํ•ด์„œ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

  3. Controller ๋กœ ์ „ํ•ด์ง„ ์š”์ฒญ์€ ๋‚ด๋ถ€์—์„œ ์„œ๋น„์Šค, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ ๋ฐ ๊ฐ€๊ณตํ•˜๊ณ  ์ ์ ˆํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ทธ ๊ฒฐ๊ณผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•  ๋ชจ๋ธ์ด ์ƒ์„ฑ๋˜๊ณ 

  5. ๋ทฐ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ view resolver ๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

  6. ๊ทธ ์ •๋ณด๋ฅผ ์ฐธ๊ณ ํ•ด์„œ view ๊ฐ€ ๋ Œ๋”๋ง ๋˜๋ฉด

  7. ๋งˆ์นจ๋‚ด ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Last updated