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

JiYoung Dev ๐Ÿ–ฅ

[MVC ํŒจํ„ด] MVC ํŒจํ„ด์œผ๋กœ ๋ฎค์ง ํ”Œ๋ ˆ์ด์–ด ์„ค๊ณ„ํ•˜๊ธฐ (2023.04.12) ๋ณธ๋ฌธ

full stack/JAVA

[MVC ํŒจํ„ด] MVC ํŒจํ„ด์œผ๋กœ ๋ฎค์ง ํ”Œ๋ ˆ์ด์–ด ์„ค๊ณ„ํ•˜๊ธฐ (2023.04.12)

Shinjio 2023. 4. 12. 23:33

๐ŸŽˆ๋””์ž์ธ ํŒจํ„ด(Design Pattern)

์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™์˜ ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ์—์„œ ํŠน์ • ๋ฌธ๋งฅ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ…

์†Œ์Šค๋‚˜ ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ ๋ฐ”๋กœ ์ „ํ™˜๋  ์ˆ˜ ์žˆ๋Š” ์™„์„ฑ๋œ ๋””์ž์ธ์€ ์•„๋‹ˆ๋ฉฐ ๋‹ค๋ฅธ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ์— ์“ฐ์ด๋Š” ํ…œํ”Œ๋ฆฟ

ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์‹œ์Šคํ…œ์„ ๋””์ž์ธํ•  ๋•Œ ๊ณตํ†ต๋œ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ์— ์“ฐ์ด๋Š” ํ˜•์‹ํ™”๋œ ๊ด€ํ–‰

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

 

๐ŸŽˆMVC ํŒจํ„ด (M : model, V : view, C : controller)

๋””์ž์ธ ํŒจํ„ด(Design Pattern)์˜ ํ•œ ์ข…๋ฅ˜๋กœ

์ธํ„ฐํŽ˜์ด์Šค, ๋ฐ์ดํ„ฐ ๋ฐ ๋…ผ๋ฆฌ ์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด

์†Œํ”„ํŠธ์›จ์–ด์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ํ™”๋ฉด์„ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์Œ

(๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง : ๊ธฐ๋Šฅ์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๊ณผ์ •(์‚ฌ์šฉ์ž์˜ ๋ˆˆ์— ์•ˆ๋ณด์ž„))

- model : ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด, ๋‚ด๋ถ€์˜ ์ƒํƒœ ์ •๋ณด, ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๊ฒฐ

- view : ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๋ณด๋Š” ํ™”๋ฉด๊ณผ ๋ ˆ์ด์•„์›ƒ

- Controller : ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ํŒŒ์•…ํ•œ ํ›„ ์š”์ฒญ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ Model์— ์˜๋ขฐ, ๋ฐ์ดํ„ฐ๋ฅผ view์— ๋ฐ˜์˜ํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ ค์คŒ.  view์™€ model์ด ํ•˜๋Š” ์ผ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋กœ์ง์„ ๋‹ด๋‹น

์‚ฌ์šฉ์ž๋Š” view๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅ ๋ฐ›๊ณ , ์ž…๋ ฅํ•œ ์ •๋ณด๋Š” Controller๋ฅผ ํ†ตํ•ด Model๋กœ ์ „๋‹ฌ๋˜๊ฑฐ๋‚˜ ์ฆ‰์‹œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ Controller๊ฐ€ ์ฒ˜๋ฆฌ. 

 

๐Ÿ“– MVC ํŒจํ„ด์œผ๋กœ ๋ฎค์งํ”Œ๋ ˆ์ด์–ด ์„ค๊ณ„ํ•˜๊ธฐ

 

M : model 
์Œ์•…(๊ฐ€์ˆ˜๋ช…, ๊ณก๋ช…, ์žฌ์ƒ์‹œ๊ฐ„, ๊ฒฝ๋กœ)
V : view
ํ”Œ๋ ˆ์ด์–ด์˜ ์ธํ„ฐํŽ˜์ด์Šค(ํ™”๋ฉด ๊ตฌํ˜„) 
์žฌ์ƒ, ์ •์ง€, ๋‹ค์Œ๊ณก, ์ด์ „๊ณก, ์ข…๋ฃŒ ๋ฉ”๋‰ด ์„ ํƒ
C : controller
ํ”Œ๋ ˆ์ด์–ด ์ปจํŠธ๋กค
์žฌ์ƒ, ์ •์ง€, ๋‹ค์Œ๊ณก, ์ด์ „๊ณก, ์ข…๋ฃŒ ๊ธฐ๋Šฅ

 

โš™๏ธ Model

 

โš™๏ธ view

 

โš™๏ธ controller

 

์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ player.jar ํ™œ์šฉ