About MVVM Concept - sery270/sunflower_clone GitHub Wiki
Model์์ ์ ์ํ๊ณ ViewModel์์ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ค. View์์๋ ์ด Model์ ๊ฐ์ ธ๋ค ๋ฟ๋ฆฌ๋ ์ผ ๋ง ํ๊ฒ๋๋ค.
์ฆ,
View๋ ๋ณด์ฌ์ฃผ๋ ์ผ, UI ๋ถ๋ถ๋ง ๋ด๋นํ๊ฒ ๋๋ค. ๋ฐ์ดํฐ๋ ๊ฐ์ ธ๊ฐ ๋ฟ๋ฆฌ๊ธฐ๋ง ํ๋ค.
โ activity, fragment (UI)
Model์ View์์ ๋ณด์ฌ์ง ๋ฐ์ดํฐ์ ๋ํ ์ ์, ํ์ ๋ด๋นํ๋ค.
โ data class
- ์ ์ ์ธํฐ๋ ์
- ๋ผ์ดํ์ฌ์ดํด
์๋๋ View์ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋ ์์ ์ฝ๋๋ฅผ ๋ฃ์ด ๊ตฌํ ํ๋๋ฐ, MVVM ์์์ ์ด ๋ฐ์ดํฐ ์ ์ ๋ฐ ์ฒ๋ฆฌ ๋ถ๋ถ๊ณผ ๋ ๋๋ง ๋ถ๋ถ์ ๋์์ด ๊ตฌ๋ถ๋์ด ์๋ค.
๋ฐ๋ผ์ MVVM ์์ , ๊ฐ View์ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋ ์์์, ์ ์ ํ ViewModel ๋์์ ํธ์ถํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ค.
์ฆ,
View๋ ์์ํ UI ์ ์ธ ๋ถ๋ถ๋ง ๋ด๋นํ๊ฒ ๋๋ค.
ViewModel์ View๋ก๋ถํฐ ํธ์ถ๋์ด, ์ ์ ์ธํฐ๋ ์ ๋ฐ ๋ผ์ดํ ์ฌ์ดํด๊ณผ ๊ด๋ จ๋ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๊ฒ ๋๋ค.
View์ ํ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ์ฌ์ฉ์์์ ์ธํฐ๋ ์ ๊ณผ ๋ผ์ดํ ์ฌ์ดํด ๊ด๋ จ ์ฒ๋ฆฌ ๋ด๋น
ํญ์ View๊ฐ ViewModel๋ฅผ ํธ์ถํ๊ณ , ViewModel์ ํธ์ถ ๋ฐ์์ ๋, ๋์ํ๋ค.
ViewModel์ด View๋ฅผ ํธ์ถํ์ง๋ ์๋๋ค.
- Data Binding
Data Binding์ ์ด๋ ํ Subject๋ฅผ ๋๊ณ ๋ค๋ฅธ ๊ฐ์ฒด๋ค์ด ์ด๋ฅผ ๊ตฌ๋ ํ๋ ๋ฐฉ์์ด๋ค. ์ฆ, Subject๊ฐ ์ ๋ฐ์ดํธ ๋๋ฉด ๋ค๋ฅธ ๊ฐ์ฒด๋ค์ด ์๋์ผ๋ก ๋ฐ๋๊ฒ ๋๋ ํ์์ด๋ค. ๋ฐ์ดํฐ๋ฅผ ์๋ก๊ณ ์นจํ๊ธฐ ์ํด ViewModel์ด View๋ฅผ ํธ์ถํ์ง๋ ์๋๋ค!
Data Binding ๊ตฌํ ๋ฐฉ๋ฒ
- Android JetPack์ Data Binding
- Observer ํจํด์ Data Binding
- RxJava2