About MVVM Concept - sery270/sunflower_clone GitHub Wiki

Model ๐Ÿ…๐Ÿฅฌ

View์— ํ‘œ์‹œํ•  ๋ฐ์ดํ„ฐ ์ •์˜ ๋‹ด๋‹น

View์— ํ‘œ์‹œํ•  ๋ฐ์ดํ„ฐ๋ž€?

Model์—์„œ ์ •์˜ํ•˜๊ณ  ViewModel์—์„œ ์ฒ˜๋ฆฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. View์—์„œ๋Š” ์ด Model์„ ๊ฐ€์ ธ๋‹ค ๋ฟŒ๋ฆฌ๋Š” ์ผ ๋งŒ ํ•˜๊ฒŒ๋œ๋‹ค.

์ฆ‰,

View๋Š” ๋ณด์—ฌ์ฃผ๋Š” ์ผ, UI ๋ถ€๋ถ„๋งŒ ๋‹ด๋‹นํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ๊ฐ€์ ธ๊ฐ€ ๋ฟŒ๋ฆฌ๊ธฐ๋งŒ ํ•œ๋‹ค.

โ†’ activity, fragment (UI)

Model์€ View์—์„œ ๋ณด์—ฌ์งˆ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ •์˜, ํ‹€์„ ๋‹ด๋‹นํ•œ๋‹ค.

โ†’ data class


View ๐Ÿฝ๐Ÿฅฃ

UI ๋ฐ ๋ฐ์ดํ„ฐ ๋ Œ๋”๋ง ๋‹ด๋‹น

View ์˜ ๋‹ด๋‹น ์˜์—ญ ์ค‘, MVVM ๊ด€์ ์—์„œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ถ€๋ถ„?

  • ์œ ์ € ์ธํ„ฐ๋ ‰์…˜
  • ๋ผ์ดํ”„์‚ฌ์ดํด

์›๋ž˜๋Š” View์˜ ์ƒ๋ช… ์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ ์•ˆ์— ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด ๊ตฌํ˜„ ํ–ˆ๋Š”๋ฐ, MVVM ์ƒ์—์„  ์ด ๋ฐ์ดํ„ฐ ์ •์˜ ๋ฐ ์ฒ˜๋ฆฌ ๋ถ€๋ถ„๊ณผ ๋ Œ๋”๋ง ๋ถ€๋ถ„์˜ ๋™์ž‘์ด ๊ตฌ๋ถ„๋˜์–ด ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ MVVM ์—์„ , ๊ฐ View์˜ ์ƒ๋ช… ์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ, ์ ์ ˆํ•œ ViewModel ๋™์ž‘์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.

์ฆ‰,

View๋Š” ์ˆœ์ˆ˜ํžˆ UI ์ ์ธ ๋ถ€๋ถ„๋งŒ ๋‹ด๋‹นํ•˜๊ฒŒ ๋œ๋‹ค.

ViewModel์€ View๋กœ๋ถ€ํ„ฐ ํ˜ธ์ถœ๋˜์–ด, ์œ ์ € ์ธํ„ฐ๋ ‰์…˜ ๋ฐ ๋ผ์ดํ”„ ์‚ฌ์ดํด๊ณผ ๊ด€๋ จ๋œ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋œ๋‹ค.


ViewModel ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿณ๐Ÿง‘๐Ÿพโ€๐Ÿณ

View์— ํ‘œ์‹œํ•  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ์‚ฌ์šฉ์ž์™€์˜ ์ธํ„ฐ๋ ‰์…˜๊ณผ ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ด€๋ จ ์ฒ˜๋ฆฌ ๋‹ด๋‹น

View์™€ ViewModel๊ฐ„์˜ ํ†ต์‹ 

ํ•ญ์ƒ View๊ฐ€ ViewModel๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ViewModel์€ ํ˜ธ์ถœ ๋ฐ›์•˜์„ ๋•Œ, ๋™์ž‘ํ•œ๋‹ค.

ViewModel์ด View๋ฅผ ํ˜ธ์ถœํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด, ๋ฐ์ดํ„ฐ ์ƒˆ๋กœ ๊ณ ์นจ ๊ฐ™์€ ๊ธฐ๋Šฅ์€?

  • Data Binding

Data Binding์€ ์–ด๋– ํ•œ Subject๋ฅผ ๋‘๊ณ  ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์ด ์ด๋ฅผ ๊ตฌ๋…ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ฆ‰, Subject๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๋ฉด ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์ด ์ž๋™์œผ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋˜๋Š” ํ˜•์‹์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๊ธฐ ์œ„ํ•ด ViewModel์ด View๋ฅผ ํ˜ธ์ถœํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค!

Data Binding ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

  • Android JetPack์˜ Data Binding
  • Observer ํŒจํ„ด์˜ Data Binding
  • RxJava2


์ฐธ๊ณ 

์•ˆ๋“œ๋กœ์ด๋“œ์˜ MVVM์— ๋Œ€ํ•˜์—ฌ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ