Sobes.tech
Junior

Popište model interakce MVC.

sobes.tech AI

Odpověď od AI

Architektonický vzor, který dělí aplikaci na tři vzájemně propojené části:

  • Model: Představuje data a obchodní logiku. Nem má informace o View nebo Controller. Oznámí View o změnách svých dat (přes Observer, Listener).
  • View: Zobrazuje data z modelu a reaguje na akce uživatele. Neobsahuje obchodní logiku a neinteraguje přímo s Modelem. Posílá požadavky na kontroler při interakci uživatele.
  • Controller: Spojovací prostředník mezi Model a View. Zpracovává vstup uživatele z View, aktualizuje Model a vybírá View k zobrazení.

Výhody:

  • Oddělení odpovědností.
  • Vylepšená testovatelnost (Model a Controller jsou testovány nezávisle).
  • Možnost opakovaného použití (zejména Modelu).

Nevýhody:

  • Stává se objemným pro složité UI (tlusté controllery - "masivní controllery").
  • Interakce mezi View a Modelem může být matoucí (přes Controller).
  • Těsná vazba mezi View a Controller (v Androidu často zastává roli obou).

V Androidu často Activity nebo Fragment plní funkce jak View, tak Controller, což ztěžuje oddělení. V čisté podobě je MVC v Androidu zřídka používán, častěji se využívají odvozené vzory jako MVP nebo MVVM.