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.
'๐ฅ > ๊ธฐํ ๋ฑ๋ฑ ๐ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[git] git flow : ๋ค์ํ ๋ธ๋์น ์ ๋ต (0) | 2021.08.31 |
---|