Co je to Model-View-Controller?
Model-view-controller (MVC) je typ softwarové architektury a návrhového vzoru, který segmentuje každý prvek programu do přesně definovaných oblastí funkčnosti. V architektuře řadiče zobrazení modelu se model zabývá veškerou interní logikou programu, která manipuluje, ukládá, načítá a jinak zpracovává a vypočítává data. Aspekt pohledu je zodpovědný za zobrazování informací z modelu pro uživatele a také poskytuje uživateli způsob, jak dát vstup do programu. Řídicí jednotka přijímá vstupy z pohledu, vyhodnocuje je nebo jinak zpracovává a interaguje s modelem pro změnu dat nebo programového stavu, který je nakonec uživateli zobrazen v pohledu. Ačkoli design-prohlížeč-řadič design vyžaduje program zapouzdřit funkčnost, tři oddíly stále musí vzájemně ovlivňovat nějakým způsobem a obecně jsou na sobě závislé v jistém smyslu, na rozdíl od jiných agresivnějších vzorů designu.
Poměrně často se vzor-pohled-kontrolér zobrazuje v aplikacích, které spravují grafické uživatelské rozhraní (GUI). S použitím vzoru MVC jsou různé vizuální prvky GUI zpracovávány pohledem, záznamem a zpracováním toho, kde a na co uživatel klikne, je zpracováván ovladačem, a skutečná změna informací nebo načítání informací je prováděna modelem. V závislosti na přesném návrhu aplikace může mít každá komponenta vzoru MVC mechanismus pro interakci s ostatními komponentami, jako je například model, který je schopen přímo nařídit pohledu, aby obnovil obrazovku, nebo pohled mající způsob, jak říct řadič, který obnovuje obrazovku a nepřijímá nový vstup. Na rozdíl od některých návrhových vzorů, které využívají přísný přístup v černé skříni, mají programy typu model-view-controller tendenci být o něco pružnější, ačkoli některé implementace mohou způsobit, že se program MVC obtížně modulárně mění nebo ladí.
V některých případech nemusí vzorec-model-view-controller obsahovat pouze jednu z každé komponenty. Jedním příkladem je aplikace, která má více pohledů, například více monitorů, nebo displej, který lze vidět na několika klientských zařízeních. V aplikaci, která umožňuje mnoha uživatelům přístup k databázi, lze použít více pohledů a řadičů, vše odpovídá jednomu modelu. Je však běžnější navrhovat systémy, které udržují poměr mezi jednotlivými částmi komponentů model-pohled-kontroler.
I když se komponenty řadičů modelu a pohledu navzájem spoléhají, může být mnohem snazší modifikovat určité části systému, které používají vzor MVC, než kdyby se žádný vzor nepoužíval vůbec, zejména v případě objektově ne orientovaného aplikace. Pokud aplikace používá k implementaci interakcí mezi součástmi zpětná volání nebo posluchače a pozorovatele, lze každou součást změnit bez ovlivnění ostatních dvou. To znamená, že nové GUI by mohlo být implementováno bez ovlivnění modelu nebo řadiče. Je však třeba poznamenat, že zásadní změny v systému kontroléru zobrazení modelu mohou vyžadovat určité malé množství překódování pro každou jednotlivou součást.