MVC

Model
View
Controller

 

 

๊ฐœ๋ฐœํ•  ๋•Œ 3๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ์—ญํ• ์„ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์„ MVC ํŒจํ„ด์ด๋ผ ํ•œ๋‹ค.

 

 

 

๋ชจ๋ธ Model

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ •๋ณด, ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. 

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฌด์—‡์„ ํ• ๊ฒƒ์ธ์ง€๋ฅผ ์ •์˜ํ•˜๋ฉฐ ๋‚ด๋ถ€ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

๋ชจ๋ธ์˜ ๊ทœ์น™
1. ์‚ฌ์šฉ์ž๊ฐ€ ํŽธ์žกํ•˜๊ธธ ์›ํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
2. view๋‚˜ controller์— ๋Œ€ํ•ด์„œ ์–ด๋–ค ์ •๋ณด๋„ ์•Œ์ง€ ๋ชปํ•œ๋‹ค.
3. ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด, ๋ณ€๊ฒฝ ํ†ต์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค. 
๋”๋ณด๊ธฐ

1 -> ํ™”๋ฉด์•ˆ์˜ ๋„ค๋ชจ๋ฐ•์Šค์— ๊ธ€์ž๊ฐ€ ํ‘œํ˜„๋œ๋‹ค๋ฉด, ๋„ค๋ชจ๋ฐ•์Šค์˜ ํ™”๋ฉด ์œ„์น˜ ์ •๋ณด, ๋„ค๋ชจ๋ฐ•์Šค์˜ ํฌ๊ธฐ์ •๋ณด, ๊ธ€์ž๋‚ด์šฉ, ๊ธ€์ž์˜ ์œ„์น˜, ๊ธ€์ž์˜ ํฌ๋งท ์ •๋ณด ๋“ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ

 

2 -> ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ ๋ชจ๋ธ์—์„œ ํ™”๋ฉด UI๋ฅผ ์ง์ ‘ ์กฐ์ •ํ•ด์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ทฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‚ด๋ถ€ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ง€๋ฉด ์•ˆ ๋œ๋‹ค๋Š” ๋ง

 

3 ->๋ชจ๋ธ์˜ ์†์„ฑ ์ค‘ ํ…์ŠคํŠธ ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ์ด ๋œ๋‹ค๋ฉด, ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋ฉฐ, ๋ˆ„๊ตฐ๊ฐ€ ๋ชจ๋ธ์„ ๋ณ€๊ฒฝํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋ƒˆ์„ ๋•Œ ์ด๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ๋ชจ๋ธ์€ ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋„ ๋ณ€ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

 

 

 

๋ทฐ View

ํ™”๋ฉด์— ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ์—ญํ• 

input ํ…์ŠคํŠธ, ์ฒดํฌ๋ฐ•์Šค ํ•ญ๋ชฉ ๋“ฑ๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ๋ฐ์ดํ„ฐ ๋ฐ ๊ฐ์ฒด์˜ ์ž…๋ ฅ, ๊ทธ๋ฆฌ๊ณ  ๋ณด์—ฌ์ฃผ๋Š” ์ถœ๋ ฅ์„ ๋‹ด๋‹นํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž๋“ค์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์ด๋‹ค.

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

1 -> ํ™”๋ฉด์— ๊ธ€์ž๋ฅผ ํ‘œ์‹œ ํ•˜๊ธฐ ์œ„ํ•ด, ๋ชจ๋ธ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ „๋‹ฌ๋ฐ›๊ฒŒ ๋ ํ…๋ฐ, ๊ทธ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž„์˜์˜ ๋ทฐ ๋‚ด๋ทฐ์— ์ €์žฅํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ๋‹จ์ˆœํžˆ ๋„ค๋ชจ ๋ฐ•์Šค๋ฅผ ๊ทธ๋ฆฌ๋ผ๋Š” ๋ช…๋ น์„ ๋ฐ›์œผ๋ฉด, ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ธฐ๋งŒ ํ•˜๊ณ  ๊ทธ ํ™”๋ฉด์„ ๊ทธ๋ฆด ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋“ค์€ ์ €์žฅํ•˜์ง€ ์•Š์•„์•ผ ํ•จ!

 

2 -> ๋ชจ๋ธ๊ณผ ๊ฐ™์€ ์ž๊ธฐ ์ž์‹ ์˜ ๋นผ๊ณ ๋Š” ๋‹ค๋ฅธ ์š”์†Œ๋Š” ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„์„œ๋Š” ์•ˆ๋œ๋‹ค. ๊ทธ๋ƒฅ ๋ทฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์œผ๋ฉด ํ™”๋ฉด์— ํ‘œ์‹œํ•ด์ฃผ๋Š” ์—ญํ• ๋งŒ ๊ฐ€์ง„๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

3 -> ๋ชจ๋ธ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ ์ด๋ฅธ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ณ€๊ฒฝ์„ ์•Œ๋ ค์ค˜์•ผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ๋ทฐ์—์„œ๋Š” ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋œ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด ์ด๋ฅผ ๋ชจ๋ธ์—๊ฒŒ ์ „๋‹ฌํ•ด์„œ ๋ชจ๋ธ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝ ํ†ต์ง€๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ์„ค๊ณ„๋ฅผ ํ•ด์•ผ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ์ •๋ณด๋“ค์„ ํ‘œํ˜„ํ•  ๋•Œ ์‰ฝ๊ฒŒ ์„ค๊ณ„๋ฅผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

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

๋ชจ๋ธ์ด “์–ด๋–ป๊ฒŒ” ์ฒ˜๋ฆฌํ•  ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ณ , ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ํ™”๋ฉด์˜ ๋กœ์ง์ฒ˜๋ฆฌ ๋ถ€๋ถ„์ด๋‹ค.

ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ถ€๋ถ„์„ ๊ตฌํ˜„๋˜๊ฒŒ ๋˜๋ฉฐ, ์š”์ฒญ ๋‚ด์šฉ์„ ๋ถ„์„ํ•ด์„œ Model๊ณผ View์— ์—…๋ฐ์ดํŠธ ์š”์ฒญ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. (๋ชจ๋ธ๊ณผ ๋ทฐ์˜ ์ค‘๊ฐœ ์—ญํ• )

์ปจํŠธ๋กค๋Ÿฌ์˜ ๊ทœ์น™
1. ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
2. ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ์˜ ๋ณ€๊ฒฝ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ด์•ผ ํ•œ๋‹ค.
๋”๋ณด๊ธฐ

1 -> ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ๋Š” ์„œ๋กœ์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฅด๊ณ , ๋ณ€๊ฒฝ์„ ์™ธ๋ถ€๋กœ ์•Œ๋ฆฌ๊ณ , ์ˆ˜์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ์ด๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ค‘์žฌํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋ธ๊ณผ ๊ทธ์— ๊ด€๋ จ๋œ ๋ทฐ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

2 -> ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ์˜ ๋ณ€๊ฒฝ ํ†ต์ง€๋ฅผ ๋ฐ›์œผ๋ฉด ์ด๋ฅผ ํ•ด์„ํ•ด์„œ ๊ฐ๊ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ์—๊ฒŒ ํ†ต์ง€๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.

๋˜ํ•œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”์ธ ๋กœ์ง์€ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋‹ด๋‹นํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

MVC๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์™€ ์˜์˜

์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ํŽ˜์ด์ง€, ๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ์ด 2๊ฐ€์ง€๋ฅผ ์ค‘๊ฐ„์—์„œ ์ œ์–ดํ•˜๋Š” ์ปจํŠธ๋กค, ์ด 3๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋˜๋Š” ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๋ฉด ๊ฐ๊ฐ ๋งก์€๋ฐ”์—๋งŒ ์ง‘์ค‘์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๊ณต์žฅ์—์„œ๋„ ํ•˜๋‚˜์˜ ์—ญํ• ๋“ค๋งŒ ๋‹ด๋‹น์„ ํ•ด์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์„œ ํšจ์œจ์ ์ด๋“ฏ...

โ€‹

์„œ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ๊ฐ์ž์˜ ์—ญํ• ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋”ํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ๊ทธ๋ ‡๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ ๋‹ค๋ฉด, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™•์žฅ์„ฑ, ๊ทธ๋ฆฌ๊ณ  ์œ ์—ฐ์„ฑ์ด ์ฆ๊ฐ€ํ•˜๊ณ , ์ค‘๋ณต์ฝ”๋”ฉ์ด๋ผ๋Š” ๋ฌธ์ œ์  ๋˜ํ•œ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. 

 

MVCํŒจํ„ด์€ ๊ฒฐ๊ตญ "์–ด๋–ป๊ฒŒ ๋‚˜๋ˆŒ ๊ฒƒ์ธ๊ฐ€"์— ๋Œ€ํ•œ ํ•ด๋‹ต ์ค‘ ํ•˜๋‚˜๋‹ค. ์–ด๋–ค ํŠน์ •ํ•œ ์—ญํ• ๋“ค์— ๋Œ€ํ•ด ์—ญํ• ๋ถ„๋‹ด์„ ํ•  ๋•Œ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ MVCํŒจํ„ด!!!!!

 

 

 

 

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

MVC์—์„œ View๋Š” Controller์— ์—ฐ๊ฒฐ๋˜์–ด ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๋‹จ์œ„์š”์†Œ์ด๋ฏ€๋กœ ๋‹ค์ˆ˜์˜ View๋“ค์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Model์€ Controller๋ฅผ ํ†ตํ•ด์„œ View์™€ ์—ฐ๊ฒฐ๋˜์–ด์ง€์ง€๋งŒ, ์ด๋ ‡๊ฒŒ Controller๋ฅผ ํ†ตํ•ด์„œ ํ•˜๋‚˜์˜ View์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š” Model๋„ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

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

 

๊ทธ๋ž˜์„œ ์œ„์˜ ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•œ ์—ฌ๋Ÿฌ ๋‹ค์–‘ํ•œ!! ํŒจํ„ด์„ ํŒŒ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

MVP, MVVM, Viper, Clean Architecture, Flux, Redux, RxMVVM….

 


Reference.

๋งํฌ1 ๋งํฌ2

'๐Ÿ”ฅ > ๊ธฐํƒ€ ๋“ฑ๋“ฑ ๐ŸŽธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[git] git flow : ๋‹ค์–‘ํ•œ ๋ธŒ๋žœ์น˜ ์ „๋žต  (0) 2021.08.31

+ Recent posts