MVVM - mandol96/Navi GitHub Wiki
Repository
- UI์ ์ง์ ์ ์ผ๋ก ๊ด๊ณ์๋ ๋ฐ์ดํฐ ๊ด๋ จ ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ๋ณต์ก์ฑ์ ์ค์ ๋๋ค.
- ๋ฐ์ดํฐ ์์ค๋ฅผ ์ถ์ํํ์ฌ ๋ฐ์ดํฐ์ ์ถ์ฒ๋ฅผ ๋ชฐ๋ผ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํ์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ๋ง๋ ํํ๋ก ๊ฐ๊ณตํด์ค๋๋ค.
MVVM ํจํด View
- UI๊ทธ๋ฆฌ๊ธฐ, ์ฌ์ฉ์ action ์๋ฆฌ๊ธฐ ViewModel
- View์ ๋ํ๋ผ ๋ฐ์ดํฐ ๊ด๋ฆฌ, ์ ๋ ฅ ์ด๋ฒคํธ ์ํ ๊ด๋ฆฌ, UI๋ฅผ ๊ทธ๋ฆฌ๋๋ฐ ํ์ํ ๋ฐ์ดํฐ ์์ฒญ Model
- ๋ฐ์ดํฐ ๊ด๋ฆฌ, ์ฑ์ ๋น์ฆ๋์ค ๋ก์ง Data ๊ณ์ธต์ด model์ ์ญํ ์ ํ๋ค
"NaviApp UI ํ๋ฆ ํ (์ง๋) -> ์ง๋ ์ถ๊ฐํ๊ธฐ -> ์์น ์ ํ ->๊ฒ์๊ธ -> ๊ฒ์๊ธ ๋ฑ๋ก -> ๊ณต์ -
์ง๋ ํ๋ฉด์์๋ Kako API๋ฅผ ํ์ฉํ์ฌ ์ง๋๋ฅผ ๋์์ค๋๋ค. ํ๋กํ ๋ฒํผ(FAB)์ ํด๋ฆญ ์ ์ฅ์ ๋ฑ๋ก์ผ๋ก ์ด๋ํ๊ฒ ๋ฉ๋๋ค. ์ฅ์ ๋ฑ๋ก์์๋ ๋๋๋ค์ด๋ฉ๋ด์ ํ ์คํธํ๋๊ฐ ๋ค ์ ๋ ฅ์ด ๋๋ฉด ๋ฒํผ์ด ํ์ฑํ ๋๊ณ , ์๋ฃ ๋ฒํผ์ ๋๋ฅด๋ฉด ํ ์คํธ ๋ฉ์์ง๋ก ์ฑ๊ณต ์คํจ ์ /๋ฌด๋ฅผ ์๋ ค์ค๋๋ค. ์์น ์ฐพ๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ์์ ์ ํ์ฌ ์์น๋ก ์ด๋ํ์ฌ ๋ณด์ฌ์ค๋๋ค. NaviService์์ ์นด์นด์ค Rest API๋ฅผ ์ด์ฉํ์ฌ json ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํ/์ญ์ง๋ ฌํ ์ญํ ์ ํ์ฌ ์ฃผ์ <-> ์ขํ๋ฅผ ๊ตฌํด์ค๋๋ค. ๊ฒ์๊ธ ํ๋ฉด์์๋ ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ๋ก ๋ฆฌ์คํธ ํ์์ผ๋ก ๊ฒ์๊ธ๋ค์ ๋ํ๋ด์ฃผ๊ณ ํ๋กํ ๋ฒํผ(FAB)์ ํด๋ฆญ ์ ์ฅ์ ๋ฑ๋ก์ผ๋ก ์ด๋ํ๋ฉด ์ฅ์ ๋ฑ๋ก๊ณผ ๊ฐ์ด ๋ชจ๋ ๊ฐ์ด ์ ๋ ฅ๋์ด์ผ ๋ฒํผ์ด ํ์ฑํ๋ฉ๋๋ค. ํด๋น ํ๋ฉด์ MVVM ํจํด์ ์ ์ฉํ์ฌ Data๋ฅผ ๊ด๋ฆฌํ๋ ์ฝ๋๋ Repository์์ ํด์ฃผ๊ณ ViewModel์์๋ StateFlow๋ก UI์ ์ํ์ ๋ฐ๋ผ ๋ณด์ฌ์ฃผ๋ Repository์ ์ฝ๋๋ฅผ ์ฐธ์กฐํ์ฌ ์ฑ๊ณต/์คํจ/๋ก๋ฉ์ ๋ํ ์ํ๋ฅผ ๋ํ๋ด์ค๋๋ค.