๊ด€๋ฆฌ ๋ฉ”๋‰ด

Daehyunii's Dev-blog

MVC ๋ณธ๋ฌธ

๐Ÿ“š Language & CS knowledge/IT ์šฉ์–ด

MVC

Daehyunii 2022. 12. 23. 15:49
MVC๋ž€? (Model - View - Controller)
MVC๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

  ์šฐ์„  ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์ด๋ž€ ๊ฐœ๋ฐœ ๋ฐฉ์‹์„ ๊ณต์‹ํ™”ํ•œ ๋ฐฉ๋ฒ•๋ก ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ๋ถ€ํ„ฐ ์ง€๊ธˆ๊นŒ์ง€ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ ๊ณตํ†ต์ ์ธ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋””์ž์ธ ํŒจํ„ด์„ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ๊ฐ€๋…์„ฑ, ๊ฐ„๊ฒฐ์„ฑ ๊ทธ๋ฆฌ๊ณ  ํ™•์žฅ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜์—ฌ ํšจ์œจ์ ์ธ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋””์ž์ธํŒจํ„ด์˜ ์ข…๋ฅ˜๋Š” ๋งค์šฐ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค. 

 

๋””์ž์ธ ํŒจํ„ด

 

๊ทธ๋ ‡๋‹ค๋ฉด MVC์—์„œ ์ •ํ•œ ๊ฐœ๋ฐœ ๋ฐฉ์‹์„ ๊ณต์‹ํ™”ํ•œ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ผ๊นŒ์š”?

์•ฑ ๊ฐœ๋ฐœ์„ ์„ธ ๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ ์š”์†Œ์— ๊ณ ์œ ํ•œ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

Model : Controller์—๊ฒŒ ๋ฐ›์€ ์š”์ฒญ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
             ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์‹œ Controller์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
Controller : User๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์•„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค๋ฉด Model์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
                    Model์—๊ฒŒ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋Š” View์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
View: Controller๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ Client๋กœ ์ „์†กํ•ด ํ™”๋ฉด์— ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

 

MVC

 

  ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท ์‡ผํ•‘๋ชฐ์„ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ๋ณธ ๊ฒฝํ—˜์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฌผํ’ˆ์„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๊ฒŒ ๋˜๋Š”๋ฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋“ค์–ด๊ฐ๊ณผ ๋™์‹œ์— ์˜ˆ์ƒ ๊ฒฐ์ œ ๊ธˆ์•ก์ด ๊ฐ™์ด ๋ณ€๋™ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋ฌผํ’ˆ์ด ์ถ”๊ฐ€๋จ์— ๋”ฐ๋ผ ์˜ˆ์ƒ ๊ฒฐ์ œ ๊ธˆ์•ก์ด ์ˆ˜์ •๋˜๋Š” ๋กœ์ง์„ '๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง'์ด๋ผ๊ณ  ํ•˜๊ณ , MVC์—์„œ๋Š” C์˜์—ญ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹จ์ˆœํžˆ ์˜ˆ์ƒ ๊ฒฐ์ œ ๊ธˆ์•ก์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜์—ญ์„ V์˜์—ญ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ํ•ต์‹ฌ์„ ๋‹ด๋‹นํ•˜๋Š” ์˜์—ญ์ด C์˜์—ญ์ž…๋‹ˆ๋‹ค.

 

MVCํŒจํ„ด์˜ ํ•œ๊ณ„

  MVC์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋…๋ฆฝ์‹œํ‚ด์œผ๋กœ์จ ๊ฐœ๋ฐœ ํšจ์œจ์„ฑ์„ ๋†’์ธ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ MVC์—์„œ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชจ๋ธ, ๋ทฐ์™€ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ ๋‹ค์ˆ˜์˜ ๋ชจ๋ธ๊ณผ ๋ทฐ๊ฐ€ ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋ธ๊ณผ ๋ทฐ๋Š” ์‹ค์งˆ์ ์œผ๋กœ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š๊ณ , ํŠนํžˆ ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๋ชจ๋ธ๊ณผ ๋ทฐ๊ฐ€ ๋ณต์žกํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ์˜์กด์„ฑ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด MVC์—์„œ ํŒŒ์ƒ๋œ ํŒจํ„ด์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

 

MVP(Model-View-Presenter)

   MVP์˜ ํŠน์ง•์€ ๋ทฐ์™€ ๋ชจ๋ธ์ด ํ”„๋ ˆ์  ํ„ฐ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. MVC์—์„œ๋Š” ๋ชจ๋ธ์ด ๋ทฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ๋ทฐ๊ฐ€ ๋ชจ๋ธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ MVP์—์„œ๋Š” ๋ทฐ์™€ ๋ชจ๋ธ์€ ํ”„๋ ˆ์  ํ„ฐ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

MVP

MVVM(Model-View-View Model)

  MVVM๋ชจ๋ธ์€ ๋ทฐ๋ชจ๋ธ์ด ๋ชจ๋ธ๊ณผ ๋ทฐ ์‚ฌ์ด์— ์œ„์น˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ ์œผ๋กœ MVP์™€ ๋™์ผํ•˜๊ฒŒ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ทฐ๋ชจ๋ธ์€ ๋ทฐ์—์„œ ๋ณด์ผ ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. MVC์—์„œ๋Š” Model์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์ฒด์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์˜์—ญ์ด์—ˆ๋‹ค๋ฉด MVVM ๋ชจ๋ธ์—์„œ๋Š” View Model์ด View์—์„œ ๋ณด์ผ ๋ฐ์ดํ„ฐ๋ฅผ View Model์ด ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , View Model์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด View์—์„œ ๋ณด์ด๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’๋„ ๋ณ€๊ฒฝ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

'๐Ÿ“š Language & CS knowledge > IT ์šฉ์–ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

web 1.0 / web 2.0 / web 3.0  (0) 2022.12.09