JavaRush /Java Blog /Random-KO /7๋ถ€. MVC(Model-View-Controller) ํŒจํ„ด ์†Œ๊ฐœ
Professor Hans Noodles
๋ ˆ๋ฒจ 41

7๋ถ€. MVC(Model-View-Controller) ํŒจํ„ด ์†Œ๊ฐœ

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์ด ์ž๋ฃŒ๋Š” "์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ์†Œ๊ฐœ" ์‹œ๋ฆฌ์ฆˆ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ์ด์ „ ๊ธฐ์‚ฌ: 7๋ถ€. MVC(Model-View-Controller) ํŒจํ„ด ์†Œ๊ฐœ - 1์ด ์ž๋ฃŒ์—์„œ๋Š” MVC์™€ ๊ฐ™์€ ๊ฒƒ์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. MVC๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ด์•ผ๊ธฐํ•˜๊ณ , MVC ์ƒ์„ฑ์˜ ์—ญ์‚ฌ๋ฅผ ๋‹ค๋ฃจ๊ณ , MVC์— ๋‚ด์žฌ๋œ ์ฃผ์š” ์•„์ด๋””์–ด์™€ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ชจ๋ธ, ๋ทฐ, ์ปจํŠธ๋กค๋Ÿฌ ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ๊ณ ๋ คํ•˜๊ณ , ์ž‘์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Spring-Boot ๋ฐ Spring-MVC๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด Java ์ฝ”๋“œ์—์„œ html ํŽ˜์ด์ง€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์ž๋ฃŒ๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ๋””์ž์ธ ํŒจํ„ด, ํŠนํžˆ Observer ๋ฐ Facade์— ๋Œ€ํ•ด ์ž˜ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. HTTP ์š”์ฒญ ๋ฐ ์‘๋‹ต์— ์ต์ˆ™ํ•ด์ง€๊ณ , HTML์˜ ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜๊ณ , Java์— ์–ด๋–ค ์ฃผ์„์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์„ธ์š”. ํŽธ์•ˆํžˆ ์•‰์•„ ์ฐจ๋ฅผ ๋งŒ๋“ค๊ณ , ๋””์ €ํŠธ, ์ƒ๋Ÿฌ๋“œ, ๋ฉ”์ธ ์ฝ”์Šค์™€ ์ฒซ ๋ฒˆ์งธ ์ฝ”์Šค๋ฅผ ์ค€๋น„ํ•˜์„ธ์š”. ์šฐ๋ฆฌ๋Š” ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

MVC์˜ ์—ญ์‚ฌ

MVC์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋Š” 70๋…„๋Œ€ ํ›„๋ฐ˜ Xerox PARC์—์„œ ๊ทผ๋ฌดํ•˜๋ฉด์„œ Trygve Reenskaug๊ฐ€ ๊ณ ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‹น์‹œ ์ปดํ“จํ„ฐ ์ž‘์—…์€ ํ•™์—… ํ•™์œ„์™€ ๋ฐฉ๋Œ€ํ•œ ๋ฌธ์„œ์— ๋Œ€ํ•œ ๋Š์ž„์—†๋Š” ์—ฐ๊ตฌ ์—†์ด๋Š” ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. Reenskaug๊ฐ€ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๊ฐœ๋ฐœ์ž ๊ทธ๋ฃน๊ณผ ํ•จ๊ป˜ ํ•ด๊ฒฐํ•œ ๋ฌธ์ œ๋Š” ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์™€ ์ปดํ“จํ„ฐ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œํŽธ์œผ๋กœ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šฐ๋ฉด์„œ๋„ ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” ์ปดํ“จํ„ฐ์™€ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. Reenskaug๋Š” Alan Kay์˜ ์ง€๋„ ํ•˜์— "๋ชจ๋“  ์—ฐ๋ น๋Œ€์˜ ์–ด๋ฆฐ์ด๋ฅผ ์œ„ํ•œ" ํœด๋Œ€์šฉ ์ปดํ“จํ„ฐ์ธ Dynabook๊ณผ SmallTalk ์–ธ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ํŒ€์—์„œ ์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ์นœ์ˆ™ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ฐœ๋…์ด ํ™•๋ฆฝ๋œ ๊ฒƒ์€ ๋ฐ”๋กœ ๊ทธ๋•Œ์˜€์Šต๋‹ˆ๋‹ค. Reenskaug์™€ ๊ทธ์˜ ํŒ€์˜ ์ž‘์—…์€ IT ๋ถ„์•ผ์˜ ๋ฐœ์ „์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์ณค์Šต๋‹ˆ๋‹ค. MVC์™€ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ จ๋˜์ง€๋Š” ์•Š์ง€๋งŒ ์ด๋Ÿฌํ•œ ๊ฐœ๋ฐœ์˜ ์ค‘์š”์„ฑ์„ ๋ณด์—ฌ์ฃผ๋Š” ํฅ๋ฏธ๋กœ์šด ์‚ฌ์‹ค์„ ์ œ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 2007๋…„, Apple iPhone์ด ๋ฐœํ‘œ๋œ ํ›„ Alan Kay๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. โ€œMacintosh๊ฐ€ ๋‚˜์™”์„ ๋•Œ Newsweek๋Š” ๋‚˜์—๊ฒŒ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€ ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋น„ํŒ๋ฐ›์„ ๋งŒํ•œ ์ตœ์ดˆ์˜ ๊ฐœ์ธ์šฉ ์ปดํ“จํ„ฐ์ž…๋‹ˆ๋‹ค. ํ”„๋ ˆ์  ํ…Œ์ด์…˜์ด ๋๋‚œ ํ›„ Steve Jobs๊ฐ€ ์™€์„œ ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค. iPhone์ด ๋น„ํŒ๋ฐ›์„ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ๊ฐ€๋กœ์„ธ๋กœ 5์ธ์น˜, ์„ธ๋กœ 8์ธ์น˜๋กœ ๋งŒ๋“ค๋ฉด ์„ธ๊ณ„๋ฅผ ์ •๋ณตํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.โ€ 3๋…„ ํ›„์ธ 2010๋…„ 1์›” 27์ผ, Apple์€ 9.7์ธ์น˜ iPad๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์Šคํ‹ฐ๋ธŒ ์žก์Šค๋Š” Alan Kay์˜ ์กฐ์–ธ์„ ๊ฑฐ์˜ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. Rennskaug๊ฐ€ ์ž‘์—…ํ•œ ํ”„๋กœ์ ํŠธ๋Š” 10๋…„ ๋™์•ˆ ์ง€์†๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ œ์ž‘์ž๊ฐ€ MVC์— ๊ด€ํ•œ ์ฒซ ๋ฒˆ์งธ ์ถœํŒ๋ฌผ์„ 10๋…„ ํ›„์— ์ถœํŒํ–ˆ์Šต๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์— ๊ด€ํ•œ ์—ฌ๋Ÿฌ ์ฑ…๊ณผ ๊ธฐ์‚ฌ์˜ ์ €์ž์ธ Martin Fowler๋Š” SmallTalk์˜ ์ž‘๋™ ๋ฒ„์ „์—์„œ MVC๋ฅผ ๋ฐฐ์› ๋‹ค๊ณ  ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋žซ๋™์•ˆ ๊ธฐ๋ณธ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ MVC์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์—†์—ˆ๊ณ  ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ์ธํ•ด ์ด ๊ฐœ๋…์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ํ•ด์„์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์€ MVC๋ฅผ ๋””์ž์ธ ์ฒด๊ณ„๋‚˜ ํŒจํ„ด์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. ๋œ ์ผ๋ฐ˜์ ์œผ๋กœ MVC๋Š” ๋ณตํ•ฉ ํŒจํ„ด ๋˜๋Š” ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ์—ฌ๋Ÿฌ ํŒจํ„ด์˜ ์กฐํ•ฉ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์‹ค ์•ž์„œ ๋งํ–ˆ๋“ฏ์ด MVC๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ จ์˜ ์•„ํ‚คํ…์ฒ˜ ์•„์ด๋””์–ด/์›๋ฆฌ/์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค... ๋‹ค์Œ์œผ๋กœ MVC ๊ฐœ๋…์— ํฌํ•จ๋œ ์ฃผ์š” ์•„์ด๋””์–ด๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

MVC๋ž€ ๋ฌด์—‡์ธ๊ฐ€: ๊ธฐ๋ณธ ์•„์ด๋””์–ด์™€ ์›๋ฆฌ

  • VC๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ–์ถ˜ ๋ณต์žกํ•œ ์ •๋ณด ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ์•„ํ‚คํ…์ฒ˜ ์•„์ด๋””์–ด์™€ ์›์น™์ž…๋‹ˆ๋‹ค.
  • MVC๋Š” Model-View-Controller์˜ ์•ฝ์–ด์ž…๋‹ˆ๋‹ค.
๋ฉด์ฑ…์กฐํ•ญ: MVC๋Š” ๋””์ž์ธ ํŒจํ„ด์ด ์•„๋‹™๋‹ˆ๋‹ค. MVC๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ์•„์ด๋””์–ด์™€ ์›์น™์˜ ์ง‘ํ•ฉ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŽธ์˜์ƒ ๋งค๋ฒˆ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด "์•„ํ‚คํ…์ฒ˜ ์•„์ด๋””์–ด ์„ธํŠธ..."๋ฅผ MVC๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Model-View-Controller๋ผ๋Š” ๋‹จ์–ด ๋’ค์— ๋ฌด์—‡์ด ์ˆจ๊ฒจ์ ธ ์žˆ์Šต๋‹ˆ๊นŒ? ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•  ๋•Œ MVC ํŒจํ„ด์— ๋”ฐ๋ผ ์‹œ์Šคํ…œ์„ ์„ธ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋‚˜๋ˆ„์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ชจ๋“ˆ ๋˜๋Š” ๊ตฌ์„ฑ์š”์†Œ๋ผ๊ณ  ๋ถ€๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•˜๋˜ 3์œผ๋กœ ๋‚˜๋ˆ„์„ธ์š”. ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ์—๋Š” ๊ณ ์œ ํ•œ ๋ชฉ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ. ์ฒซ ๋ฒˆ์งธ ๊ตฌ์„ฑ ์š”์†Œ/๋ชจ๋“ˆ์€ ์†Œ์œ„ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค. ์‹œ์Šคํ…œ์˜ ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ๋ทฐ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“ˆ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ๋ชจ๋“  ๊ฒƒ์€ ๋ทฐ์— ์˜ํ•ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ œ์–ด ์žฅ์น˜. ์ด ์ฒด์ธ์˜ ์„ธ ๋ฒˆ์งธ ๋งํฌ๋Š” ์ปจํŠธ๋กค๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ž‘์—… ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ž‘์—…์€ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ฒ˜๋ฆฌ๋จ). ๋ชจ๋ธ์€ ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์žฅ ๋…๋ฆฝ์ ์ธ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋งค์šฐ ๋…๋ฆฝ์ ์ด์–ด์„œ ๋ทฐ ๋ฐ ์ปจํŠธ๋กค๋Ÿฌ ๋ชจ๋“ˆ์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์€ ๋งค์šฐ ๋…๋ฆฝ์ ์ด๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ๋ทฐ์™€ ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•ด ์‚ฌ์‹ค์ƒ ์•„๋ฌด๊ฒƒ๋„ ์•Œ์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ทฐ์˜ ์ฃผ์š” ๋ชฉ์ ์€ ๋ชจ๋ธ์˜ ์ •๋ณด๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์นœ์ˆ™ํ•œ ํ˜•์‹์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ทฐ์˜ ์ฃผ์š” ์ œํ•œ ์‚ฌํ•ญ์€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ๋ชจ๋ธ์„ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ฃผ์š” ๋ชฉ์ ์€ ์‚ฌ์šฉ์ž ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋ธ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด์„œ์ž…๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ •ํ™•ํ•˜๊ฒŒ๋Š” ๋ชจ๋ธ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ฐ•์˜์—์„œ ์ด๋ฏธ ๋ณด์—ฌ๋“œ๋ฆฐ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 7๋ถ€. MVC(Model-View-Controller) ํŒจํ„ด ์†Œ๊ฐœ - 2์ด ๋ชจ๋“  ๊ฒƒ์—์„œ ์šฐ๋ฆฌ๋Š” ์™„์ „ํžˆ ๋…ผ๋ฆฌ์ ์ธ ๊ฒฐ๋ก ์„ ๋„์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์€ ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆ„์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๋ถ„๋ฆฌ๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‹จ๊ณ„๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1๋‹จ๊ณ„: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๋ถ„๋ฆฌ

MVC์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋Œ€๋žต์ ์œผ๋กœ 2๊ฐœ์˜ ๋ชจ๋“ˆ, ์ฆ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ตฌํ˜„์„ ๋‹ด๋‹นํ•˜๋Š” ๋ชจ๋“ˆ๊ณผ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ชจ๋“ˆ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“ˆ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋„๋ฉ”์ธ ๋ชจ๋ธ์ด ๊ตฌํ˜„๋˜๋Š” ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ์ด ๋ฉ๋‹ˆ๋‹ค. MVC ๊ฐœ๋…์—์„œ ์ด ๋ชจ๋“ˆ์€ ๋ฌธ์ž M์ด ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ. ๋‘ ๋ฒˆ์งธ ๋ชจ๋“ˆ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ ํ‘œ์‹œ ๋ฐ ์‚ฌ์šฉ์ž์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํ˜ธ ์ž‘์šฉ ๋…ผ๋ฆฌ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ „์ฒด ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถ„๋ฆฌ์˜ ์ฃผ์š” ๋ชฉ์ ์€ ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ(MVC ์šฉ์–ด๋กœ ๋ชจ๋ธ)์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถ„ํ•  ํ›„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 7๋ถ€. MVC(Model-View-Controller) ํŒจํ„ด ์†Œ๊ฐœ - 3

2๋‹จ๊ณ„. ๊ด€์ฐฐ์ž ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์˜ ๋…๋ฆฝ์„ฑ๊ณผ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋™๊ธฐํ™”๋ฅผ ๋”์šฑ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” 2๊ฐ€์ง€ ๋ชฉํ‘œ๋ฅผ ์ถ”๊ตฌํ•ฉ๋‹ˆ๋‹ค:
  1. ๋ชจ๋ธ์˜ ๋…๋ฆฝ์„ฑ์„ ๋”์šฑ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ ์˜ˆ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋™๊ธฐํ™”์˜ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์˜จ๋ผ์ธ์œผ๋กœ ์˜ํ™”ํ‘œ๋ฅผ ๊ตฌ๋งคํ•˜๊ณ  ๊ทน์žฅ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ขŒ์„ ์ˆ˜๋ฅผ ํ™•์ธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋„ ์šฐ๋ฆฌ์™€ ๋™์‹œ์— ์˜ํ™”ํ‘œ๋ฅผ ๊ตฌ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‚ฌ๋žŒ์ด ์šฐ๋ฆฌ๋ณด๋‹ค ๋จผ์ € ํ‹ฐ์ผ“์„ ๊ตฌ๋งคํ•œ๋‹ค๋ฉด ์šฐ๋ฆฌ ์„ธ์…˜์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ขŒ์„ ์ˆ˜๊ฐ€ ๊ฐ์†Œํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด๊ฒƒ์ด ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค. ์‹œ์Šคํ…œ ์ฝ”์–ด(๋ชจ๋ธ)์™€ ์ธํ„ฐํŽ˜์ด์Šค(๊ตฌ๋งคํ•˜๋Š” ์›น ํŽ˜์ด์ง€)๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ์—์„œ๋Š” 2๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์ขŒ์„์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž๊ฐ€ ํ‹ฐ์ผ“์„ ๊ตฌ๋งคํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž๋Š” ์ด ์ •๋ณด๋ฅผ ํŽ˜์ด์ง€์— ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์‹œ์Šคํ…œ ์ปค๋„์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ปค๋„, ์ฆ‰ ๋ชจ๋ธ์ด ์ธํ„ฐํŽ˜์ด์Šค์— ์ข…์†๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•  ๋•Œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์—ผ๋‘์— ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” Observer ํŒจํ„ด์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„์›€์„ ๋ฐ›์•„ ๋ชจ๋ธ์€ ๋ชจ๋“  ๊ตฌ๋…์ž์—๊ฒŒ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๊ตฌ๋…์ž์ธ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์•Œ๋ฆผ๊ณผ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ด€์ฐฐ์ž ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋ธ์€ ํ•œํŽธ์œผ๋กœ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ–ˆ์Œ์„ ์ธํ„ฐํŽ˜์ด์Šค(๋ทฐ ๋ฐ ์ปจํŠธ๋กค๋Ÿฌ)์— ์•Œ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” ์‹ค์ œ๋กœ๋Š” ์•„๋ฌด๊ฒƒ๋„ "์•Œ์ง€" ๋ชปํ•˜๋ฏ€๋กœ ๋…๋ฆฝ์ ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Step 3. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ View์™€ Controller๋กœ ๋‚˜๋ˆ„๊ธฐ

์šฐ๋ฆฌ๋Š” ๊ณ„์†ํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆ„์ง€๋งŒ ๊ณ„์ธต ๊ตฌ์กฐ์˜ ๋‚ฎ์€ ์ˆ˜์ค€์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” 1๋‹จ๊ณ„์—์„œ ๋ณ„๋„์˜ ๋ชจ๋“ˆ๋กœ ๋ถ„๋ฆฌ๋œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ทฐ์™€ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ์™€ ์ปจํŠธ๋กค๋Ÿฌ ์‚ฌ์ด์— ์—„๊ฒฉํ•œ ์„ ์„ ๊ธ‹๋Š” ๊ฒƒ์€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ทฐ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ๊ฒƒ์ด๊ณ  ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋ผ๊ณ  ๋งํ•˜๋ฉด ๋ชจ์ˆœ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ํŽ˜์ด์ง€์˜ ๋ฒ„ํŠผ์ด๋‚˜ ์ „ํ™”๊ธฐ ํ™”๋ฉด์˜ ๊ฐ€์ƒ ํ‚ค๋ณด๋“œ์™€ ๊ฐ™์€ ์ปจํŠธ๋กค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ทฐ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๊ธฐ๋Šฅ์  ๋ถ„ํ• ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฃผ์š” ์ž„๋ฌด๋Š” ์‚ฌ์šฉ์ž์™€ ์‹œ์Šคํ…œ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” 2๊ฐ€์ง€ ๊ธฐ๋Šฅ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•˜๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์™€ ๋ช…๋ น์„ ์‹œ์Šคํ…œ์— ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค(์‹œ์Šคํ…œ์œผ๋กœ ์ „์†ก).
์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 7๋ถ€. MVC(Model-View-Controller) ํŒจํ„ด ์†Œ๊ฐœ - 4๋”ฐ๋ผ์„œ ๋ชจ๋ธ, ๋ทฐ ๋ฐ ์ปจํŠธ๋กค๋Ÿฌ๋ผ๋Š” ์„ธ ๊ฐ€์ง€ ๋ชจ๋“ˆ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์•ฝ:
  1. MVC์˜ ์›์น™์— ๋”ฐ๋ผ ์‹œ์Šคํ…œ์„ ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆ„์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ณ  ๋…๋ฆฝ์ ์ธ ๋ชจ๋“ˆ์€ ๋ชจ๋ธ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ชจ๋ธ์€ ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  4. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์‹œ์Šคํ…œ ๋ถ„๋ฆฌ์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ ๋ชจ๋ธ๊ณผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋‚˜๋ˆ„์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  5. ๋‹ค์Œ์œผ๋กœ Observer ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์˜ ๋…๋ฆฝ์„ฑ์„ ๊ฐ•ํ™”ํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋™๊ธฐํ™”๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
  6. ์„ธ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋ทฐ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  7. ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์‹œ์Šคํ…œ์— ์ž…๋ ฅํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์€ ์ปจํŠธ๋กค๋Ÿฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
  8. ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
๋…ผ์˜ํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ์ผ์ด ํ•˜๋‚˜ ๋” ๋‚จ์•˜์œผ๋ฉฐ ์ฝ”์ฝ”์•„๋ฅผ ๋งˆ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ทฐ์™€ ์ปจํŠธ๋กค๋Ÿฌ, ๋ชจ๋ธ์˜ ๊ด€๊ณ„์— ๋Œ€ํ•ด ์กฐ๊ธˆ

์‚ฌ์šฉ์ž๊ฐ€ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ชจ๋ธ์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ ์‚ฌ์šฉ์ž๋Š” ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ(View๋ฅผ ํ†ตํ•ด)๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ๋ฐ›์œผ๋ฉด ๋ชจ๋ธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋‚˜์š”? ๋ทฐ์™€ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ชจ๋ธ๊ณผ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋‚˜์š”? ๊ฒฐ๊ตญ, View ํด๋ž˜์Šค๊ฐ€ Model ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ชจ๋ธ์˜ ๋…๋ฆฝ์„ฑ์— ์˜๋ฌธ์˜ ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ์€ ๋ทฐ๋‚˜ ์ปจํŠธ๋กค๋Ÿฌ ๋ชจ๋‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ธด๋ฐ€ํ•˜๊ฒŒ ์ƒํ˜ธ ์—ฐ๊ฒฐ๋œ ํด๋ž˜์Šค ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. Model์„ View, Controller์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Facade ๋””์ž์ธ ํŒจํ„ด์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ํŒŒ์‚ฌ๋“œ๋Š” ๋ชจ๋ธ๊ณผ ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์ด์˜ ๋ฐ”๋กœ ๊ทธ ๋ ˆ์ด์–ด๊ฐ€ ๋  ๊ฒƒ์ด๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋ทฐ๋Š” ํŽธ๋ฆฌํ•œ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํ•„์š”ํ•œ ํŒŒ์‚ฌ๋“œ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋žต์ ์œผ๋กœ ๋ณด๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 7๋ถ€. MVC(Model-View-Controller) ํŒจํ„ด ์†Œ๊ฐœ - 6

MVC: ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

MVC ์›์น™์„ ๋”ฐ๋ฅด๋Š” ์ฃผ์š” ๋ชฉํ‘œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(๋ชจ๋ธ) ๊ตฌํ˜„๊ณผ ์‹œ๊ฐํ™”(๋ทฐ)๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ถ„๋ฆฌํ•˜๋ฉด ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์ด ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค. MVC ์‚ฌ์šฉ์˜ ์ด์ ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ‘œ, ๊ทธ๋ž˜ํ”„ ๋˜๋Š” ์ฐจํŠธ ํ˜•์‹(๋‹ค์–‘ํ•œ ์œ ํ˜• ์‚ฌ์šฉ)์ž…๋‹ˆ๋‹ค. ๋™์‹œ์— ๋ทฐ ๊ตฌํ˜„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž ์ž‘์—…(๋ฒ„ํŠผ ํด๋ฆญ, ๋ฐ์ดํ„ฐ ์ž…๋ ฅ)์— ๋Œ€ํ•œ ๋ฐ˜์‘์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MVC์˜ ์›์น™์„ ๋”ฐ๋ฅด๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋ฉฐ ํ–ฅํ›„ ์‹œ์Šคํ…œ ํ™•์žฅ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ๋” ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ์ž…๋ฌธ" ์‹œ๋ฆฌ์ฆˆ์˜ ๋งˆ์ง€๋ง‰ ์ž๋ฃŒ์—์„œ๋Š” Spring-MVC๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด MVC ๊ตฌํ˜„์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 8๋ถ€. spring-boot๋กœ ์ž‘์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์„ฑํ•˜๊ธฐ
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION