62. MVC (Model-View-Controller)

ํ™์ธ์—ดยท2021๋…„ 11์›” 21์ผ
0
post-thumbnail

MVC (Model-View-Controller)

MVC๋ž€ ?

์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์™€ ๊ด€๋ จ๋œ ์ผ์ข…์˜ ๋””์ž์ธ ํŒจํ„ด์œผ๋กœ, ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์„ค๊ณ„ ํŒจํ„ด์ค‘ ํ•˜๋‚˜๋‹ค. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI, User Interface)์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ํ™”๋ฉด์„ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ ์ค‘์ ์„ ๋‘๊ณ ์žˆ๋‹ค. ๋‹ค์‹œ๋งํ•ด ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ๋” ๋‚˜์€ ์œ ์ง€๋ณด์ˆ˜ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
๐Ÿ‘€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ? ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์‚ฌ์šฉ์ž์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์ด์˜ ์ •๋ณด๊ตํ™˜๋“ฑ์„ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ • ๋˜๋Š” ๊ทธ๋ฅผ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Model

  • ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(์ƒํƒœ ๋ณ€ํ™”์ฒ˜๋ฆฌ, ์ƒํƒœ ์ •๋ณด ๋ฐ˜ํ™˜)์„ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋ณ€๊ฒฝ๋œ์‚ฌํ•ญ์„ ๋ทฐ์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋ชจ๋“  ์œ ํšจ์„ฑ๊ฒ€์‚ฌ, ๋ฐ์ดํ„ฐ ์ˆ˜์ •/์‚ญ์ œ๋“ฑ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    ์˜ˆ) ์ปจํŠธ๋กค๋Ÿฌ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ๋ฐ›๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰ํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ์— ์ „๋‹ฌํ•œ๋‹ค.

View

  • ๋ทฐ๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ๋งŒ(๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”) ํ•œ๋ฉด๋œ๋‹ค.
    โžช ์ฆ‰, ๋ทฐ๋Š” ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ „๋‹ฌํ•ด์ค€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ HTML์„ ๋™์ ์œผ๋กœ ๋žœ๋”๋งํ•˜๋Š” ํ…œํ”Œ๋ฆฟํŒŒ์ผ.
  • ์–ด๋– ํ•œ ๋ฐ์ดํ„ฐ๋‚˜, ๋กœ์ง์ด ์กด์žฌํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
  • ๋ทฐ๋Š” ์ตœ์ข… ๋ Œ๋”๋ง ํ™”๋ฉด์„ ์ปจํŠธ๋กค๋Ÿฌ์— ๋ณด๋‚ด๊ณ  ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ตœ์ข… ๋ Œ๋”๋ง ํ™”๋ฉด์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค„์ง€ ๊ด€๋ฆฌํ•œ๋‹ค.

Controller

  • ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ๋Š์Šจํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ชจ๋ธ์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์–ด๋–ค ์‘๋‹ต์„ ํ• ์ง€๋งŒ ์•Œ๋ ค์ฃผ๋ฉด๋œ๋‹ค.
    โžช ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ฒ˜๋ฆฌ์˜ ์„ฑ๊ณต/์‹คํŒจ๋ฅผ ์‹ ๊ฒฝ์“ธ ํ•„์š” ์—†์Œ.
  • ํŠน์ • ์ด๋ฒคํŠธ/์•ก์…˜๋“ค์ด ์ปจํŠธ๋กค๋Ÿฌ์— ์ „์†ก๋˜๋ฉด ๋ชจ๋ธ์— ์ฒ˜๋ฆฌ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ๋ทฐ๋กœ ์ „์†กํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„ ์ œ์–ด

๐Ÿ“Œ ๋ชจ๋ธ๊ณผ ๋ทฐ๊ฐ€ ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ! ๋ชจ๋ธ๊ณผ ๋ทฐ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์€ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋œ๋‹ค!

์˜ˆ์‹œ

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋ง›์ง‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
  2. ๋ชจ๋“  ๋ง›์ง‘ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์ฟผ๋ฆฌํ•˜๊ณ  Model์˜ ์‘๋‹ต์ด ์„ฑ๊ณต์ ์ด๋ฉด ํ•ด๋‹น ๋ชฉ๋ก์„ Controller์— ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  3. Controller๋Š” ๋ง›์ง‘ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ณด์—ฌ์งˆ View์— ๋ง›์ง‘ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ Œ๋”๋ง๋˜์–ด ๋ณด์ด๋„๋ก ์š”์ฒญํ•œ๋‹ค.
  4. View๋Š” Controller ๋ง›์ง‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์™€ ๋ธŒ๋ผ์šฐ์ €์— ์‚ฌ์šฉํ•  HTML๋กœ ๋ Œ๋”๋งํ•˜๊ณ  Controller์— ๋ณด๋‚ธ๋‹ค.
  5. Controller๋Š” ๋‹ค์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋žœ๋”๋ง๋œ ๋ฐ์ดํ„ฐ๋ฅผ View์—๊ฒŒ ๋ณด๋‚ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋„๋ก ์š”์ฒญํ•œ๋‹ค. ๋งŒ์ผ ์ด์ „์—, Model์ด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ ๊ฒฝ์šฐ, ์š”์ฒญ์„ ์ข…๋ฃŒํ•˜๊ณ , ๋ง›์ง‘๋ฆฌ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ์˜ค๋ฅ˜๋ฅผ ๋ Œ๋”๋งํ•˜๋„๋กํ•˜์—ฌ ํ•ด๋‹น ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
profile
ํ•จ๊ป˜ ์ผํ•˜๊ณ ์‹ถ์€ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€