ABOUT ME

์ž‘์€ ๋””ํ…Œ์ผ์— ์ง‘์ฐฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž

Today
-
Yesterday
-
Total
-
  • [์•„ํ‚คํ…์ฒ˜] MVC, MVP, MVVM, MVI ํŒจํ„ด์— ๊ด€ํ•˜์—ฌ
    IT Study 2024. 2. 5. 16:08
    728x90

    ๐Ÿˆ 1. MVC

    Model, View, Controller์˜ ์•ฝ์ž๋กœ, ์•ˆ๋“œ๋กœ์ด๋“œ์™€ ๊ด€๊ณ„์—†์ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด(๊ตฌ์กฐ)์ž…๋‹ˆ๋‹ค.

    1. User(์œ ์ €)๊ฐ€ Controller(์ปจํŠธ๋กค๋Ÿฌ)๋ฅผ ํ†ตํ•ด ์ž…๋ ฅํ•œ๋‹ค.
    2. Controller๋Š” Model(๋ชจ๋ธ)์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ์š”์ฒญํ•œ๋‹ค.
    3. Controller๋Š” ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€, View(๋ทฐ)์— ์ „๋‹ฌํ•œ๋‹ค.
    4. ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ View์— ๊ทธ๋ ค, User๋Š” ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณธ๋‹ค.

     

    Model

    ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    View

    ์œ ์ €์— ๋ณด์ผ ํ™”๋ฉด์„ ํ‘œํ˜„ํ•˜๋ฉฐ, ์–ด๋–ค ๋ฐ์ดํ„ฐ๋‚˜ ๋กœ์ง์ด ์žˆ์–ด์„œ๋„ ์•ˆ๋œ๋‹ค.
    Activity, Fragment = View, Controller ์—ญํ• 
    Controller

    Model๊ณผ View๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉฐ, ์œ ์ €์˜ ์ž…๋ ฅ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

     

    1-1. MVC ์žฅ๋‹จ์ 

    ์žฅ์  ๋‹จ์ 
    ๊ตฌํ˜„ ์‰ฝ๊ณ  ๋‹จ์ˆœ Controller์— ๋งŽ์€ ์ฝ”๋“œ
    ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ ๋‹จ์ถ• ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€
    Model - View ๋ถ„๋ฆฌ Model - View ๊ฒฐํ•ฉ๋„ ์ƒ์Šน
    Model์ด ์ข…์†๋˜์ง€ ์•Š์•„, ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์ž‘์„ฑ ์–ด๋ ค์›€

    MVC ํŒจํ„ด์€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋งŽ์ด ์‚ฌ์šฉ๋˜์—ˆ์ง€๋งŒ,

    ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์–ด๋ ต๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์œผ๋กœ ์ธํ•ด ํ˜„์žฌ์—๋Š” ๋งŽ์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

    ๊ทธ๋Ÿฌ๋‚˜ ๊ทœ๋ชจ๊ฐ€ ์ž‘๊ณ  ๋น ๋ฅธ ๊ฐœ๋ฐœ์ฃผ๊ธฐ๋กœ ์ง„ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ MVC ํŒจํ„ด์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

     

     

    ๐ŸŽพ 2. MVP

    Model, View, Presenter์˜ ์•ฝ์ž๋กœ, MVC ํŒจํ„ด์˜ View์™€ Model์˜ ์˜์กด์„ฑ์„ ์—†์• ๊ณ ,

    ๋‹จ์œ„ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•œ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

    1. User(์œ ์ €)๊ฐ€ View(๋ทฐ)๋ฅผ ํ†ตํ•ด ์ž…๋ ฅํ•œ๋‹ค.
    2. View๋Š” Presenter(ํ”„๋ฆฌ์  ํ„ฐ)์— ์ด๋ฒคํŠธ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
    3. Presenter๋Š” Model(๋ชจ๋ธ)์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ์š”์ฒญํ•œ๋‹ค.
    4. Presenter๋Š” ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€, Interface๋ฅผ ํ†ตํ•ด View์— ์ „๋‹ฌํ•œ๋‹ค.
    5. ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ View์— ๊ทธ๋ ค, User๋Š” ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณธ๋‹ค.

    ์—ฌ๊ธฐ์—์„œ Model๊ณผ View์˜ ์—ญํ• ์€  MVC์™€ ๋น„์Šทํ•˜์ง€๋งŒ, Controller ๋Œ€์‹ ํ•˜์—ฌ Presenter๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

     

    Model

    ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์™€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ข…์†์ ์ด์ง€ ์•Š์•„, ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    Network API, ๋ฐ์ดํ„ฐ ์บ์‹ฑ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(, Repository) ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.
    View

    ์œ ์ €์—๊ฒŒ ๋ณด์ผ ํ™”๋ฉด์„ ํ‘œํ˜„ํ•˜๋ฉฐ, Model๋กœ๋ถ€ํ„ฐ ์–ป์€ ๋ฐ์ดํ„ฐ๋ฅผ View์—์„œ ๋ณด์—ฌ์ค€๋‹ค.

    Activity, Fragment ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.
    ์˜ค์ง Presenter๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ์ „๋‹ฌ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์—, Presenter์— ์˜์กด์ ์ด๋‹ค.
    Presenter

    Model๊ณผ View ์‚ฌ์ด์˜ ์ค‘๊ฐœ์ž ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋ฉฐ,
    View์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ Model์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ View์— ๊ทธ๋Œ€๋กœ ์ „๋‹ฌํ•œ๋‹ค.

     

    2-1. MVP์˜ ์žฅ๋‹จ์ 

    ์žฅ์  ๋‹จ์ 
    Model - View ๊ฐ„ ์˜์กด์„ฑ ์—†์Œ View์™€ Presenter๊ฐ€ 1:1 ๊ด€๊ณ„
    UI์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ถ„๋ฆฌ View๊ฐ€ ๋งŽ์•„์ง€๋ฉด, Presenter๋„ ๋งŽ์•„์ง
    ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์šฉ์ด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋ ์ˆ˜๋ก Presenter ๋น„๋Œ€ํ•ด์ง

     

     

    ๐Ÿ€ 3. MVVM

    Model, View, ViewModel์˜ ์•ฝ์ž๋กœ,

    MVP ํŒจํ„ด์—์„œ View์™€ Presenter๊ฐ€ 1:1๋กœ ๋งค์นญ๋˜์–ด์•ผ ํ•œ๋‹ค(๊ฐ•ํ•œ ๊ฒฐํ•ฉ)๋Š” ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

    1. User(์œ ์ €)๊ฐ€ View(๋ทฐ)๋ฅผ ํ†ตํ•ด ์ž…๋ ฅํ•œ๋‹ค.
    2. View๋Š” ViewModel(๋ทฐ๋ชจ๋ธ)์— ์ด๋ฒคํŠธ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
    3. ViewModel์€ Model(๋ชจ๋ธ)์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ์š”์ฒญํ•˜๊ณ , ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
    4. View๋Š” ViewModel ๊ด€์ฐฐํ•˜๊ณ  ์žˆ๋‹ค.
    5. ViewModel์—์„œ ์—…๋ฐ์ดํŠธ๋œ ๋ฐ์ดํ„ฐ๋ฅผ LiveData์— ๋„ฃ๋Š”๋‹ค.
    6. ViewModel์„ ๊ด€์ฐฐํ•˜๋˜ View๋Š” ์—…๋ฐ์ดํŠธ๋œ ๋ฐ์ดํ„ฐ๋กœ ํ™”๋ฉด์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

    MVVM ํŒจํ„ด์—์„œ๋Š” DataBinding๊ณผ LiveData๋ฅผ ํ†ตํ•ด View์™€ ViewModel ์‚ฌ์ด์˜ ๊ฒฐํ•ฉ์„ ๋Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

    Model

    ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์™€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ข…์†์ ์ด์ง€ ์•Š์•„, ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    Network API, ๋ฐ์ดํ„ฐ ์บ์‹ฑ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(, Repository) ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.
    View

    ์œ ์ €์—๊ฒŒ ๋ณด์ผ ํ™”๋ฉด์„ ํ‘œํ˜„ํ•˜๋ฉฐ, Model๋กœ๋ถ€ํ„ฐ ์–ป์€ ๋ฐ์ดํ„ฐ๋ฅผ View์—์„œ ๋ณด์—ฌ์ค€๋‹ค.

    Activity, Fragment ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.
    ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€์ฐฐํ•˜์—ฌ UI๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”๋ฅผ ์•Œ์•„์ฐจ๋ ค, ์ž๋™์œผ๋กœ ํ™”๋ฉด์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.)
    ViewModel

    Model๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ, View์— ์ข…์†์ ์ด์ง€ ์•Š์•„ ์ผ๋Œ€๋‹ค ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    ๊ฐ™์€ ViewModel์„ ๋‹ค๋ฅธ View์—์„œ๋„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    3-1. MVVM์˜ ์žฅ๋‹จ์ 

    ์žฅ์  ๋‹จ์ 
    View๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ด€์ฐฐ ๋‹ค๋ฅธ ๋””์ž์ธ ํŒจํ„ด์— ๋น„ํ•ด ๋ณต์žก
    View - ViewModel์˜ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„ DataBinding, LiveData ๋“ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•„์ˆ˜ ํ•™์Šต ํ•„์š”
    ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์ธ์ง€ํ•˜๋Š” LiveData๋ฅผ ํ†ตํ•ด ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ ์šฉ์ด  
    *ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์˜์กด ๊ด€๊ณ„๊ฐ€ ์žˆ์–ด, ๋ชจ๋“ˆ๋ณ„ ๋ถ„๋ฆฌ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ  
    ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์šฉ์ด  

    *View๋Š” ViewModel์„ ์•Œ์ง€๋งŒ, ViewModel์€ View๋ฅผ ์•Œ์ง€ ๋ชปํ•œ๋‹ค. ViewModel์€ Model์„ ์•Œ์ง€๋งŒ, Model์€ ViewModel์„ ์•Œ์ง€ ๋ชปํ•œ๋‹ค.

     

     

    ๐ŸŽฑ 4. MVI ํŒจํ„ด

    Model, View, Intent์˜ ์•ฝ์ž๋กœ, MVVM ํŒจํ„ด์—์„œ *์ƒํƒœ ๋ฌธ์ œ, ๋ถ€์ˆ˜ ํšจ๊ณผ๋ผ๋Š” ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

    *์ƒํƒœ ๋ฌธ์ œ(์—ฌ๋Ÿฌ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์ƒํƒœ๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ฐฉํ–ฅ์œผ๋กœ ํ˜๋Ÿฌํ•˜๋Š” ๊ฒฝ์šฐ), ๋ถ€์ˆ˜ ํšจ๊ณผ(์›๋ž˜์˜ ๋ชฉ์ ๊ณผ ๋‹ค๋ฅด๊ฒŒ, ๋‹ค๋ฅธ ํšจ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ์ƒํƒœ)

    ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Javascript์˜ Redux๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ, MVI๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    MVI ํŒจํ„ด์—์„œ์˜ Intent๋Š” ์‚ฌ์šฉ์ž์˜ ๋™์ž‘์„ ์˜๋ฏธํ•˜๋ฉฐ,
    ์ด ๋™์ž‘์ด Model ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    ์ด๋ ‡๊ฒŒ ๋ณ€๊ฒฝ๋œ ์ƒํƒœ๋Š” ๋‹ค์‹œ View์— ๋ฐ˜์˜๋˜์–ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

    ์ด ๊ณผ์ •์€ Redux์˜ "Action"์ด "State"๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ , ๋ณ€๊ฒฝ๋œ "State"๊ฐ€ ๋‹ค์‹œ UI์— ๋ฐ˜์˜๋˜๋Š” ๊ณผ์ •๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    ๋”ฐ๋ผ์„œ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ์ค‘์š”ํ•˜๊ณ , ํŠนํžˆ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ณต์žกํ•˜๊ณ  ์ƒํ˜ธ์ž‘์šฉ์ด ๋งŽ์€ ๊ฒฝ์šฐ,
    MVI ํŒจํ„ด์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์ผ๊ด€๋˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋‹จ๋ฐฉํ–ฅ (์„ ์ˆœํ™˜) ๊ตฌ์กฐ์˜ ํ๋ฆ„
    1. User(์œ ์ €)๊ฐ€ Intent(์ธํ…ํ„ฐ)๋ฅผ ํ†ตํ•ด Model(๋ชจ๋ธ)์— ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
    2. Model์€ ์ „๋‹ฌ๋ฐ›์€ ์ƒํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์€ ์ƒํƒœ๋ฅผ View(๋ทฐ)์— ์ „๋‹ฌํ•œ๋‹ค.
    3. View๋Š” Model๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ์ƒํƒœ์— ๋งž๋Š” ํ™”๋ฉด์„ User์— ๋ณด์—ฌ์ค€๋‹ค.

     

    Model

    ์œ ์ผํ•œ ์ƒํƒœ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด
    ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ์ด๋‚˜ ๋กœ๋“œ ๋ฐ์ดํ„ฐ ์—๋Ÿฌ ๋“ฑ ๋‹ค์–‘ํ•œ ์ƒํƒœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. (์ƒํƒœ์— ๋Œ€ํ•ด View๊ฐ€ ์–ด๋–ค ๊ฒƒ์„ ํ™”๋ฉด์— ๋ Œ๋”๋งํ•ด์•ผ ํ• ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์‘๋‹ต)
    View

    ์œ ์ €์—๊ฒŒ ๋ณด์ผ ํ™”๋ฉด์„ ํ‘œํ˜„ํ•˜๋ฉฐ, Model๋กœ๋ถ€ํ„ฐ ์–ป์€ ์ƒํƒœ๋ฅผ View์—์„œ ๋ณด์—ฌ์ค€๋‹ค.
    Intent

    ์•ฑ ๋‚ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” Action, ์•ฑ ๋‚ด์˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๋ ค๋Š” ํ–‰๋™
    Model์—๊ฒŒ ์•ฑ์˜ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. (User๋Š” ๋ชจ๋“  UI ๋ณ€ํ™”์— ๋Œ€ํ•ด Intent๋ฅผ ํ†ตํ•ด ์ด๋ฒคํŠธ๋กœ ์ „๋‹ฌํ•œ๋‹ค.)
    SideEffects

    ์ƒํƒœ ๋ณ€๊ฒฝ์ด ํ•„์š” ์—†๋Š” API, DB ์ ‘๊ทผ ๋“ฑ์˜ ์ด๋ฒคํŠธ

    (์˜ˆ : ํ† ์ŠคํŠธ ํŒ์—… ๋“ฑ)

     

    4-1. MVI์˜ ์žฅ๋‹จ์ 

    ์žฅ์  ๋‹จ์ 
    ํ•˜๋‚˜์˜ ์ƒํƒœ๋งŒ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒํƒœ ์ถฉ๋Œ์ด ์—†์Œ ๋‹ค๋ฅธ ํŒจํ„ด์— ๋น„ํ•ด ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ๋†’์Œ
    ์„ ์ˆœํ™˜(๋‹จ๋ฐฉํ–ฅ) ๊ตฌ์กฐ (๋””๋ฒ„๊น… ์šฉ์ด, ๋กœ์ง ์˜ˆ์ธก ์šฉ์ด) ์ž‘์€ ๋ณ€๊ฒฝ์—๋„ Intent๋ฅผ ๊ฑฐ์ณ์•ผ ํ•จ
    ๋ถˆ๋ณ€ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์—, ์Šค๋ ˆ๋“œ ์•ˆ์ •์„ฑ ๋ณด์žฅ ๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ ๋ฐœ์ƒ
    ๊ฐ์ž ์ฑ…์ž„์œผ๋กœ ๊ฒฐํ•ฉ๋„ ์ €ํ•˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ํ•„์š” (Intent, SideEffects ๋“ฑ ๋ชจ๋“  ์ƒํƒœ์— ๊ฐ์ฒด ์ƒ์„ฑ)

     

     

    ์‚ฌ์ง„ ์ถœ์ฒ˜ : 35๊ฐœ ํ”„๋กœ์ ํŠธ๋กœ ๋ฐฐ์šฐ๋Š” Android ์•ฑ ๊ฐœ๋ฐœ feat. Jetpack Compose ์ดˆ๊ฒฉ์ฐจ ํŒจํ‚ค์ง€ Online. Part3-Ch04

     
     
     
     
Designed by Tistory.