Počítače

Řadič zobrazení modelu (MVC)

Autor: Laura McKinney
Datum Vytvoření: 4 Duben 2021
Datum Aktualizace: 1 Červen 2024
Anonim
MVC Explained in 4 Minutes
Video: MVC Explained in 4 Minutes

Obsah

Mám velký zájem o nalezení různých řešení problému. V současné době zkoumáme různé architektury pro aplikace pro iOS.

Problémy, kterými se zabýváme

Téměř ve všech uživatelských aplikacích máme uživatelské rozhraní, Moduly obchodní logiky a dat. A každou aplikaci, kterou navrhneme, chceme, aby byla snadno škálovatelná, testovatelná, udržovatelná a opakovaně použitelná.

  • Škálovatelné: Jedním z faktorů škálovatelnosti je, kolik modulů závislosti na sobě mají. Je obtížné změnit systém, pokud je faktor závislosti mezi moduly vyšší.
  • Testovatelné: Pro testování jednotek musíme izolovat část modulů, abychom simulovali různá chování, která může systém mít (také známý jako Mocking). Pokud operace nejsou rozděleny do modulů nebo jsou moduly pevně spojeny, testování se stává velmi obtížným.
  • Udržovatelné: Ukazuje, jak složitost vašeho programu roste s růstem funkčnosti. Pokud funkce naroste do nějakého extrému, správa kódové základny a její testování by měla zůstat snadná.
  • Znovu použitelný: To znamená vytvořit skupinu operací nazvanou Moduly a poté tento modul použít tam, kde je to potřeba, namísto psaní stejných operací znovu a znovu.

Příklad problému

Abychom vypracovali různé designy, zvažte tento příklad. Stavíme a Prohlížeč profilů aplikace. Bude to aplikace pro jedno zobrazení (znamená pouze jednu obrazovku), která načte váš profil ze serveru a zobrazí informace na obrazovce. Uživatelé mohou také aktualizovat informace o svém profilu na stejné obrazovce.


Kvalita každé metody, o které pojednáváme níže, bude měřena konstrukčními parametry diskutovanými výše.

Naivní přístup

Pokud jste v programování noví a nepoužíváte nějaký framework, můžete skončit s jednou třídou ProfileView, která má všechny následující:

  1. Profilový datový model.
  2. Síťové operace k získání a uložení profilu.
  3. Zobrazit prvky např. Text, štítek, ImageView atd.

Bude to vypadat asi takto:

třída ProfileView: Zobrazit {var profil: ProfileDataModel; var nameTxt: TextView; var pic: ImageView; void loadData () void saveData () void render ()}

Umožňuje měřit tuto metodu s našimi konstrukčními parametry:

Škálovatelné:

  • Jedna třída (ProfileView), která dělá všechno, včetně vykreslování uživatelského rozhraní, načítání a ukládání dat, datového modelu, aktualizace uživatelského rozhraní a síťového provozu.
  • Pokud chcete něco změnit, musíte aktualizovat ProfileView.
  • Zobrazení profilu zná přesná data a jejich zdroj, který vytváří těsnou vazbu.

Testovatelné:

  • Je obtížné zesměšňovat funkce ProfileView při provádění testování jednotek.
  • Můžeme testovat a zesměšňovat některé funkce pomocí podtřídy ProfileView, pokud je funkce rozdělena na správné jednotkové funkce.

Udržovatelné:

  • Třída se stane obrovskou a složitou i při středních funkcích.

Znovu použitelný:

  • Tato metoda neimplementuje žádný opakovaně použitelný kód tak, jak by měl být. Například může extrahovat síťové operace do samostatného modulu.

MVC k záchraně

Tento design navrhuje rozdělit třídu boha (popsanou výše) na tři části, tj. Model, Pohled a Řídicí jednotka. Každá sekce bude mít následující odpovědnosti:


  • Modelka: Bude obsahovat data aplikace.
  • Pohled: Zobrazí na obrazovce vše, co uživateli umožňuje interakci.
  • Ovladač: Slepí View a Model dohromady. Zpracovává dvě věci: nejprve získá data z modelu a vyplní uživatelské rozhraní. Za druhé, bude získávat vstupy z pohledu a aktualizovat model.

Existuje jedna výjimka pro MVC, tj. Ve verzi Apple MVC Controller a View jsou pevně spojeny a je obtížné zesměšňovat pohled, aby bylo možné úplně otestovat třídu řadiče.

Takže teď, pokud použijeme MVC na naše Prohlížeč profilů aplikace bude vypadat takto:

Podívejme se, jak tato metoda vylepšuje předchozí metodu:

Škálovatelné:

  • View i Model jsou nyní v aplikaci aktivní a fungují samostatně.
  • Pohled a model na sobě přímo nezávisí.
  • Řadič ví, odkud získat data, jak je převést do zobrazitelné formy a aktualizovat uživatelské rozhraní.
  • Řadič zpracovává a odráží všechny akce uživatelského rozhraní na modelu.
  • Ovladač je velmi velký, pokud jsou pohledy složité.

Testovatelné:

  • Model a služby můžeme otestovat samostatně.
  • Můžeme otestovat řadiče a uživatelské rozhraní zesměšňováním modelu.
  • Testování se stává obtížným (ne nemožným), když se ovladač zvětší, jako je spousta zobrazení, animací, seznamů a akcí atd.
  • Je obtížné otestovat různé stavy uživatelského rozhraní.

Udržovatelné:

  • Protože design rozdělil kód na moduly, je snadné udržovat různé části.
  • Řadič se stává chaotickým, když získá spoustu pohledů, animací, seznamů a akcí atd.

Znovu použitelný:

  • Můžeme nahradit různé pohledy stejným modelem / službami.
  • Jak získáváme Model prostřednictvím služeb, jako je Api Client, který použije Network Client k vyžádání serveru. Všechny tyto moduly lze znovu použít.

Přehled toho, co jsme udělali

V tomto článku jsme diskutovali o následujících tématech:


  • Parametry návrhu, kterých se snažíme dosáhnout, když vytváříme aplikace pro uživatele.
  • Jak návrh parametrů ovlivňuje kvalitu softwaru.
  • Jaký je naivní přístup a jak to není dobrá volba.
  • Co je MVC a jak vylepšuje design softwaru.

Existují i ​​jiné návrhové vzory, jako je MVP, MVVM, Viper atd., Které také poskytují řešení tohoto problému.

Doufám, že vám tento článek pomohl pochopit koncept MVC. Sdílejte prosím své komentáře v sekci níže.

Články Pro Vás

Sovětský

Jak nastavit detekci narušení pomocí Snort na pfSense 2.0
Internet

Jak nastavit detekci narušení pomocí Snort na pfSense 2.0

am pracuje jako íťový analytik pro algoritmickou obchodní polečno t. Bakalář ký titul v oboru informačních technologií zí kal na UMKC.Hackeři, viry a další...
Jak snadno odstranit virus Svchost.exe
Internet

Jak snadno odstranit virus Svchost.exe

Jako vášnivý uživatel počítače j em e nakazil vým podílem škodlivých programů, které mi vyklouzla antivirová ochrana.Jako vášnivý uživatel počíta...