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

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

1eehyunji 2023. 8. 3. 19:25

๋ชจ๋ธ(Model), ๋ทฐ(View), ์ปจํŠธ๋กค๋Ÿฌ(Controller)๋กœ ์ด๋ฃจ์–ด์ง„ ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์„ธ ๊ฐ€์ง€ ์—ญํ• ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฐ๊ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ์—๋งŒ ์ง‘์ค‘ํ•ด์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค. 

์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์ด ์šฉ์ดํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ๋ชจ๋ธ๊ณผ ๋ทฐ์˜ ๊ด€๊ณ„๊ฐ€ ๋ณต์žกํ•ด์ง€๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

 

 

๋ชจ๋ธ(Model)

๋ชจ๋ธ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ƒ์ˆ˜, ๋ณ€์ˆ˜ ๋“ฑ์„ ๋œปํ•œ๋‹ค. 

๋ทฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋ฉด ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด ๋ชจ๋ธ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฐฑ์‹ ํ•œ๋‹ค.

 

๋ทฐ(View)

UI(User Interface) ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฆ‰, ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์„ ๋œปํ•œ๋‹ค.

๋ชจ๋ธ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋ฉฐ ๋‹จ์ˆœํžˆ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ์ •๋ณด๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๋˜, ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด ์ปจํŠธ๋กค๋Ÿฌ์— ์ด๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.

 

์ปจํŠธ๋กค๋Ÿฌ(Controller)

๋ชจ๋ธ์„ ํ†ตํ•ด ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ทฐ์— ๋ฐ˜์˜ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ชจ๋ธ๊ณผ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ทฐ๋ฅผ ์ž‡๋Š” ๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•œ๋‹ค. ์ด๋ฒคํŠธ ๋“ฑ ๋ฉ”์ธ ๋กœ์ง์„ ๋‹ด๋‹นํ•œ๋‹ค. ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ์˜ ๋ณ€๊ฒฝ ์•Œ๋ฆผ์„ ๋ฐ›์œผ๋ฉด ์ด๋ฅผ ํ•ด์„ํ•ด์„œ ๊ฐ๊ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ์— ํ•ด๋‹น ๋‚ด์šฉ์— ๋Œ€ํ•ด ์•Œ๋ ค์ค€๋‹ค.

 

MVC ํŒจํ„ด์˜ ๋™์ž‘ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด Controller์— ๋“ค์–ด์˜ต๋‹ˆ๋‹ค.
  2. Controller๋Š” ์š”์ฒญ์— ๋งž๊ฒŒ Model์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  3. Controller์—์„œ ์—…๋ฐ์ดํŠธ๋œ Model์„ ๋‚˜ํƒ€๋‚ด์ค„ View๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. View๋Š” ์—…๋ฐ์ดํŠธ๋œ Model์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด UI ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค.