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.