MVC, MVP, MVVM ๊ฐ๋จ ์ ๋ฆฌ
2021. 9. 7. 01:05
MVC, MVP, MVVM์ ๋์์ธ ํจํด์ผ๋ก ์ญํ ์ ์ด๋ป๊ฒ ๋๋๋์ ์ฐจ์ด์ด๋ค.
๊ฐ ๊ณ์ธต์ ๋ถ๋ฆฌ์ํด์ผ๋ก์จ ์ฝ๋์ ์ฌํ์ฉ์ฑ์ ๋์ด๊ณ ๋ถํ์ํ ์ค๋ณต์ ๋ง๋๋ค.
1. MVC
MVC๋ Model + View + Controller๋ฅผ ์๋ฏธํ๋ค.
- Model : ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ
- View : ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ UI
- Controller : ๋ชจ๋ ์ ๋ ฅ์ ์ฒ๋ฆฌ
๋์
- ์ ๋ ฅ์ด Controller๋ก ๋ค์ด์จ๋ค.
- Controller๋ ์ ๋ ฅ์ ํด๋นํ๋ Model์ ์ ๋ฐ์ดํธ ํ๋ค.
- Controller๋ Model์ ๋ณด์ฌ์ค View๋ฅผ ์ ํํ๋ค.
- ๐ฅ ์ด๋ Controller๋ ์ฌ๋ฌ ๊ฐ์ View๋ฅผ ์ ํํ ์๋ ์๊ธฐ ๋๋ฌธ์ 1:n ๊ด๊ณ์ด๋ค.
- ๐ฅ Controller๋ ์ ํ๋ง ํ๊ณ ์ ๋ฐ์ดํธ ์์ผ์ฃผ์ง ์๊ธฐ ๋๋ฌธ์ View๋ Controller๋ฅผ ์์ง ๋ชปํ๋ค.
- View๋ Model์ ์ด์ฉํ์ฌ ์ ๋ฐ์ดํธ ํ๋ค.
ํน์ง
- ์ฅ์ : ๋จ์ํ๋ค.
- ๋จ์ : View์ Model ์ฌ์ด์ ์์กด์ฑ์ด ๋๋ค.
2. MVP
MVP๋ Model + View + Presenter๋ฅผ ์๋ฏธํ๋ค.
MVC ํจํด์์์ Controller ๋์ Presenter๋ฅผ ์ฌ์ฉํ๋ค.
- Model : ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ
- View : ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ UI. ์ ๋ ฅ ์ฒ๋ฆฌ
- Presenter : View์ Model์ ๋ค๋ฆฌ ์ญํ . View์ Model์ ์ธ์คํด์ค๋ฅผ ๊ฐ์ง๊ณ ์์
๋์
- ์ ๋ ฅ์ด View๋ก ๋ค์ด์จ๋ค.
- View๋ Presenter์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค.
- ๐ฅ ํ๋์ View๋ ํ๋์ Presenter์๊ฒ ์์ฒญํ๋ฏ๋ก 1:1 ๊ด๊ณ์ด๋ค.
- Presenter๋ Model์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค.
- Model์ Presenter์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์๋ตํ๋ค.
- Presenter๋ View์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์๋ตํ๋ค.
- View๋ ์๋ต๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ํ๋ฉด์ ๋ํ๋ธ๋ค.
- ๐ฅ View์ Model์ ์๋ฒฝํ ๋ถ๋ฆฌ๋์๊ธฐ ๋๋ฌธ์ View๋ Model์ ์์ง ์์๋ ๋๋ค.
ํน์ง
- ์ฅ์ : View์ Model ์ฌ์ด์ ์์กด์ฑ์ด ์๋ค.
- ๋จ์ : View์ Presenter ์ฌ์ด์ ์์กด์ฑ์ด ๋๋ค.
3. MVVM
MVVM์ Model + View + ViewModel์ ์๋ฏธํ๋ค.
- Model : ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ
- View : ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ UI. ์ ๋ ฅ ์ฒ๋ฆฌ
- ViewModel : View๋ฅผ ํํํ๊ธฐ ์ํ Model. View๋ฅผ ๋ํ๋ด๊ธฐ ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
๋์
- ์ ๋ ฅ์ด View๋ก ๋ค์ด์จ๋ค.
- View๋ Command ํจํด์ผ๋ก ViewModel์ ์ ๋ ฅ์ ์ ๋ฌํ๋ค.
- ๐ฅ ViewModel์ ์ฌ๋ฌ View์ ์ ๋ ฅ์ ๋ฐ์ผ๋ฏ๋ก 1:n ๊ด๊ณ์ด๋ค.
- ViewModel์ Model์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค.
- Model์ ViewModel์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์๋ตํ๋ค.
- ViewModel์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ์ ์ฅํ๋ค.
- View๋ ViewModel๊ณผ Data Bindingํ์ฌ ํ๋ฉด์ ๋ํ๋ธ๋ค.
- ๐ฅ Command์ Data Binding์ ์ฌ์ฉํ์ฌ View์ ViewModel ์ฌ์ด์ ์์กด์ฑ์ ์์ค๋ค.
ํน์ง
- ์ฅ์ : View์ Model ์ฌ์ด์ ์์กด์ฑ์ด ์๋ค. View์ ViewModel ์ฌ์ด์ ์์กด์ฑ์ด ์๋ค.
- ๋จ์ : ViewModel ์ค๊ณ๊ฐ ์ด๋ ต๋ค.
์ฐธ๊ณ : https://beomy.tistory.com/43 , https://hackersstudy.tistory.com/71
728x90
'๐ป๊ฐ๋ฐ > Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ViewModel & LiveData (0) | 2021.09.20 |
---|---|
์๋๋ก ๋น๊ฒจ ์๋ก๊ณ ์นจ : SwipeRefreshLayout (0) | 2021.09.02 |
[์ค๋ฅํด๊ฒฐ] Runtime JAR files in the classpath should have the same version. These files were found in the classpath: (0) | 2021.08.26 |
Koin Setup : ์ฝ์ธ ์ ์ ํ๊ธฐ (0) | 2021.08.26 |
coroutines Setup : ์ฝ๋ฃจํด ์ ์ ํ๊ธฐ (0) | 2021.08.26 |