-
Notifications
You must be signed in to change notification settings - Fork 0
๐๏ธ MVC MVP MVVM
saeyoung Oh edited this page Dec 13, 2023
·
1 revision
-> MVVM ํจํด์ ์ ํํ ์ด์
๐ก MVC - ์์ ๊ฐ ์์กด์ฑ์ด ๊ฐํ๋ค๋ ๋จ์ ์ด ์กด์ฌํจ. view ๋ฅผ ์์ ํ ๊ฒฝ์ฐ controller ๋ฅผ, controller ๋ฅผ ์์ ํ ๊ฒฝ์ฐ
model ๊น์ง ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธธ ์ ์์. ๋ํ view ์ model ์ด controller ๋ฅผ ์ค์ฌ์ผ๋ก ๋ณต์กํ๊ฒ ์ฐ๊ฒฐ๋ ์ ์๊ธฐ ๋๋ฌธ์
controller ๊ฐ ๋น๋ํด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ด ์ ํํ์ง ์์.
MVP - view ํ๋๋ฅผ ๋ง๋ค ๋๋ง๋ค presenter๋ฅผ ๋ชจ๋ ํ๋์ฉ ๋ง๋ค์ด์ค์ผ ํ๋ฉฐ, view - presenter ์ฌ์ด์ ๋งค์ฐ ๋์ ์์กด์ฑ.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ view ์ ์ด๋ฒคํธ์ ๋ฐ๋ผ model ์ ์ํ ๋ณ๊ฒฝ์ด ํ์ํ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ํ ๋ค์ view ์ ์ ์ฉํ๊ธฐ ์ํด presenter ๊ฐ ํด์ผํ๋ ์ผ์ด ๋์ด๋จ.
โ ์์ ๊ฐ์ ์ด์ ๋ก ๋๋จธ์ง ํจํด์ด ์๋ MVVM ํจํด์ ์ ํํจ.
Model + View + Controllor
- Model
- UI์ํ, ๋น์ฆ๋์ค ๋ก์ง, ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํจ
- ๋ฐ์ดํฐ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ผ๋ฐ์ ์ผ๋ก view ์ ์๋ ค์ค.
- View
- ์ ์ ์๊ฒ ๋ณด์ฌ์ง๋ UI ๋ฅผ ๋ํ๋ด๋ ์ญํ ์ ํ๋ฉฐ, model ๋ก๋ถํฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์.
- view ๋ controller ๋ฅผ ๋ชจ๋ฆ
- Controller
- ์ ์ ์
๋ ฅ์ ๋ฐ๋ผ model ์ด๋ view ๋ฅผ ๋ณํ์ํด
- ์ ์ ์ ์ ๋ ฅ์ด controller ์ ๋ค์ด์ค๋ฉด controller ๋ model ์ ์ ๋ฐ์ดํธํ๊ณ ์ด ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ผ view ๋ฅผ ์ ํํ๊ฒ ๋จ.
- model ์์ ์ ๋ฐ์ดํธ ํ ๊ฐ์ view ๋ก ๋ณด๋ด๊ฑฐ๋, ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ์๋ ๋ณด์ฌ์ง๋ ๋ฐฉ์์ด ๋ฌ๋ผ์ง๋ ๊ฒฝ์ฐ (ex. ๊ธฐ์กด ๋ฐ์ดํฐ ์ ๋ ฌ) controller ์์ ์ฒ๋ฆฌํด์ view ๋ก ๋ณด๋ด์ค.
- Controller ์ View ๋ 1:n ๊ตฌ์กฐ
- ์ ์ ์
๋ ฅ์ ๋ฐ๋ผ model ์ด๋ view ๋ฅผ ๋ณํ์ํด
View + Presenter + Model
UI (View) ์ ๋น์ง๋์ค ๋ก์ง (Model) ์ ๋ถ๋ฆฌํ๊ณ ์๋ก ๊ฐ์ ์ํธ์์ฉ์ Presenter๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋์ ์์กด์ฑ์ ์ต์ํ.
- Model
- ์ฑ ์ ๋ฐ์์ ์ฐ์ด๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- ๋ค๋ฅธ ๋ ์์์ ์์กด์ ์ด์ง ์์.
- View
- ์ ์ ์๊ฒ ๋ณด์ฌ์ง๋ UI ๋ฅผ ๋ํ๋ด๋ ์ญํ
- Model์์ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ Presenter์์ ๋ฐ์ ์ ์ ์๊ฒ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ Presenter์ ๋งค์ฐ ์์กด์ .
- Presenter
- view์์ input ์ด ๋ค์ด์ค๋ฉด ์ด๋ฅผ model ๋ก ๊ฐ๊ณตํ์ฌ view ์ ์ ๋ฌํด์ค.
- ํ๋ฉด ๊ทธ ์์ฒด๋ ์๋์ง๋ง, ๋ณด์ฌ์ค ๊ฒ์ ๊ด๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ view์ presenter๋ 1:1 ๊ด๊ณ.
View + ViewModel + Model
- Model
- ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ
- view
- ์ฌ์ฉ์์ ์ก์ ์ ๋ฐ์.
- ์ ์ ์๊ฒ ๋ณด์ฌ์ง๋ UI ๋ฅผ ๋ํ๋ด๋ ์ญํ
- viewModel์ ๋ฐ์ดํฐ๋ฅผ ๊ด์ฐฐํด์ (live data, observe) UI ๋ฅผ ๊ฐฑ์ . ๋ฐ์ดํฐ์ ๋ณํ๋ฅผ ์์์ฐจ๋ฆฌ๊ณ ์๋์ผ๋ก ํ๋ฉด์ ๊ฐฑ์ ํ ์ ์๋ค.
- view ๋ viewmodel์ data binding ์ ํตํด ํ๋ฉด์ ๋ํ๋
- viewModel
- view ๋ฅผ ๊ทธ๋ฆฌ๋ ๊ฒ์๋ ๊ด์ฌํ์ง ์๊ณ view ๋ฅผ ๋ํ๋ด์ฃผ๊ธฐ ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๋ด๋น.
- view๊ฐ ์์ฒญํ ๋ฐ์ดํฐ๋ฅผ model๋ก ์์ฒญํ๊ณ model ๋ก๋ถํฐ ์์ฒญํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์.
- viewModel ๊ณผ view ์ ๊ด๊ณ๋ 1:1 ์ด ์๋์ด๋ ๋๋ฉฐ, 1:N ๋ ๊ฐ๋ฅํจ.
- presenter ์ ๋ค๋ฅด๊ฒ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํจ.
-
๐ฌ ํ ํ๊ณ
-
๐โโ๏ธ ๊ฐ์ธ ํ๊ณ