Nahoru
 

Co je to Model-View-Controller?

Každý programátor se časem dostane do situace, kde už mu nebude stačit jednoduché vrstvení kódu tak, jak ho to napadne. Potřebuje vnést do své práce nějaký řád, obzvláště v případech, kde už na jednom projektu nedělá sám. V tu chvíli přichází návrhové vzory.

Návrhový vzor by se dal popsat jako soubor pravidel, které vývojáři dodržují, aby se vyznali ve svém projektu a jež pomáhá k nejlépe pochopitelnému kódu. Používá se jich opravdu spoustu, např. Singleton, Model-View-Viewmodel (MVVM) nebo již zmíněný Model-View-Controller (MVC).

Jak takový návrhový vzor může fungovat? Pojďme si to předvést. Jelikož nejčastěji používám návrhový vzor Model-View-Controller (dále jen MVC), ukážu vám jej.

Návrhový vzor MVC nám odděluje logiku aplikace od jejího zobrazení. Obsahuje tři části: Modely (logika), Pohledy (zobrazení, vzhled) a Kontrolery (spojení pohledů a modelů). Prakticky to znamená, že zobrazení nemá žádný vliv na logiku a obráceně. Tato vlastnost nám umožňuje nechat projekt vyvíjet více lidmi najednou, aniž by si vzájemně zasahovali do práce.

Návrhové vzory patří do moderního programování

Jako ukázku zde uvedu vývoj webové stránky. Pro kvalitní web potřebujete umět velkou spoustu jazyků (HTML, CSS, Javascript, SQL, nějaký jazyk na straně serveru, …). Nechci žádného programátora podceňovat, ale je nepravděpodobné, že někdo ovládá všechny tyto technologie. Nabízí se tedy rozdělení projektu mezi více lidí. Pro jednoduchost se jeden tým bude starat o zobrazení webu a druhý o jeho funkčnost. Jak ale udělat to, aby byl vývoj snadný a každý chápal jeho strukturu? Možná již tušíte, použitím návrhového vzoru, například MVC.

V celém balíku souborů bude speciálně rozlišen všechen kód starající se o vzhled (tedy o pohledy) a zároveň budou jinak vypadat soubory pro logiku aplikace (modely). Poté už zbývá pouze domluva na tom, jak se tyto dvě části propojí. O to se postarají kontrolery. Jelikož se vše pěkně oddělilo, není problém použít stejnou logiku pro jinou grafiku. Program je tedy i rozšiřitelný!

Vejce
Obrázek č.1: Oddělte od sebe věci, které na sobě nemají záviset stejně jako bílky od žloutků

Nepoužití návrhového vzoru ve velkých aplikacích znamená, že každý nový člen týmu bude muset investovat hromady času k tomu, aby pochopil výtvor někoho jiného. Zároveň se velkými závislostmi mezi logikou a vzhledem může projekt zhroutit a o rozšiřitelnosti radši ani nemluvím. Doporučuji se základní návrhové vzory naučit a začít je používat. Téměř každý softwarový tým s nějakým pracuje.

Pokud umíte anglicky a chcete se o MVC a návrhových vzorech dozvědět více, můžete začít tímto videem.