Sobes.tech
Junior

Popíšte model interakcie MVC.

sobes.tech AI

Odpoveď od AI

Architektonický vzor, ktorý delí aplikáciu na tri navzájom prepojené časti:

  • Model: Predstavuje údaje a obchodnú logiku. Nemá informácie o View alebo Controller. Oznámi View o zmenách svojich údajov (cez Observer, Listener).
  • View: Zobrazuje údaje z modelu a reaguje na akcie používateľa. Neobsahuje obchodnú logiku a neinteraguje priamo s Modelom. Posiela požiadavky na controller pri interakcii používateľa.
  • Controller: Spojovací sprostredkovateľ medzi Modelom a View. Spracováva vstup používateľa z View, aktualizuje Model a vyberá View na zobrazenie.

Výhody:

  • Oddelenie zodpovedností.
  • Vylepšená testovateľnosť (Model a Controller sú testované nezávisle).
  • Možnosť opakovanej použiteľnosti (najmä Modelu).

Nevýhody:

  • Stáva sa objemným pre zložité UI (hrubé controllery - "masívne controllery").
  • Interakcia medzi View a Model môže byť mätúca (cez Controller).
  • Tiesna väzba medzi View a Controller (v Android, Activity často plní obe úlohy).

V Android, Activity alebo Fragment často plní funkcie ako View, tak Controller, čo sťažuje oddelenie. V čistej podobe sa MVC v Androidu zriedka používa, častejšie sa používajú odvodené vzory ako MVP alebo MVVM.