์˜ค๋Š˜์€ MVVM ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.

MVVM ํŒจํ„ด์€ ์•ฑ์˜ ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์˜ ํŽธ์˜์„ฑ์„ ๊ณ ๋ คํ•ด์„œ ๊ผญ ์•„ํ‚คํ…์ณ ์ ์šฉ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

MVVM ํŒจํ„ด์€ ๊ผญ ์•Œ์•„์•ผํ•˜๋Š” ์•„ํ‚คํ…์ณ์ž…๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-07-08 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 4.42.27.png

  1. Model:

  2. View:

  3. ViewModel:

    ca32a847f581a1753b6a470ba51a335d.jpg

    ์–ด๋ ต๊ณ  ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ์š”. ์„ ์ƒ๋‹˜๊ป˜์„œ ์ฐน์Œ€๋–ก ๋น„์œ ๋กœ ์„ค๋ช…์„ ํ•ด์ฃผ์…จ์Šต๋‹ˆ๋‹ค.

    1. View (์ฐน์‚ด๋–ก):
      • View๋Š” ์ฐน์Œ€๋–ก์„ ๋น„์œ ํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
      • View๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” UI ์š”์†Œ๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
      • ์‚ฌ์šฉ์ž๊ฐ€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
    2. ViewModel (์ฐน์Œ€๋–ก์ด ๋งŒ๋“ค์–ด์ง€๋Š” ๊ณผ์ •):
      • ViewModel์€ ์ฐน์Œ€๋–ก์ด ๋งŒ๋“ค์–ด์ง€๋Š” ๊ณผ์ •์„ ๋น„์œ ํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
      • ViewModel์€ View์™€ Model ์‚ฌ์ด์—์„œ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
      • View๋กœ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๊ณ , Model๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ View์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
      • ViewModel์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต ๋“ฑ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    3. Model (์ฐน์Œ€๋–ก ์žฌ๋ฃŒ):
      • Model์€ ์ฐน์Œ€๋–ก์˜ ์žฌ๋ฃŒ์ธ ์ฐน์Œ€์„ ๋น„์œ ํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
      • Model์€ ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
      • ๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, API, ๋กœ์ปฌ ์ €์žฅ์†Œ ๋“ฑ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    ์ด์™€ ๊ฐ™์ด View๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” UI๋ฅผ ๋น„์œ ํ•˜๊ณ , ViewModel์€ View์™€ Model ์‚ฌ์ด์—์„œ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ๋น„์œ ํ•˜๋ฉฐ, Model์€ ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋น„์œ ํ•ฉ๋‹ˆ๋‹ค. MVVM ํŒจํ„ด์€ ์ด๋Ÿฌํ•œ ์„ธ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    ViewModel

    แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-07-08 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 4.52.43.png

    แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-07-08 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 4.53.06.png

    ViewModel์€ ์•ฑ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ViewModel์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค (UI)์™€ ๋ฐ์ดํ„ฐ ์†Œ์Šค ๊ฐ„์˜ ์ค‘๊ฐœ์ž ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ MVVM ์•„ํ‚คํ…์ฒ˜์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ

    Flutter์—์„œ ViewModel์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋กœ provider ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ GetX ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ฐ™์€ ์ƒํƒœ ๊ด€๋ฆฌ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ViewModel์„ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์•ฑ์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์™€์˜ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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