Návrhový vzor Front Controller
- 31. Červenec 2009
- Publikováno v Návrhové vzory
- Napište komentář
Návrhový vzor Front Controller je další z možností, jak realizovat controller z architekturního vzoru MVC. Je to controller, který obsluhuje všechny požadavky směřující na jeden web. Většinou se skládá ze dvou částí: ovladače a hierarchie příkazů.
Ovladač je objekt, který příjmá post a get požadavky a na jejich základě rozhodne, kterému příkazu bude předáno řízení. Může se rozhodovat staticky nebo dynamicky. Statická verze zpravidla rozparsuje URL a pomocí podmínek rozhodne, který příkaz spustit. Dynamická verze vezme předem určenou část URL a pokusí se podle ní vytvořit instanci třídy příkazu. Výhodou statické verze je explicitně definovaná logika, kontrola chyb během překladu a taky větší volnost při tvorbě URL. U rozsáhlých webů je nevýhodou procházení velkého množství podmínek (logika v programu), nebo načítání mnoha zbytečných dat z databáze čí XML (logika v datovém uložišti). Výhodou dynamické verze je snadné přidávání nových příkazů bez nutnosti zasahovat do stávajícího kódu.
Příkazy samotné jsou součástí controlleru. Příkazy reprezentují specifické akce a mohou být naimplementovány podle návrhového vzoru Command. Potom, co objekt příkazu dokončí svou práci, vybere view, které se zobrazí uživateli.
Kdy dát přednost Front Controlleru před Page Controllerem?
- Pokud se potřebujeme zbavit duplikovaného kódu v Page Controllerech. Pravda, takovýto kód je často možné dát i do společné rodičovské třídy všech Page Cotrollerů. Časem se však může stát, že přijdeme na to, že kód v rodičovské třídě není společný úplně všem stránkám… To je chvíle, kdy bychom se měli začít poohlížet po Front Controlleru.
- Pokud máme dynamický generovanou navigaci po webu založenou na konfigurovatelných pravidlech.
- Pokud chceme mít jeden controller a v něm spravovat URL a navigaci po webu.
- Pokud chceme na jednom místě spravovat logiku společnou všem stránkám (např. autentizace) a vyhnout se tak duplicitám v kódu.
Výhody
- Centralizované řízení
- Konfigurovatelnost
Nevýhody
- Snížení výkonu aplikace v důsledku nutnosti rozhodování ovladače, který příkaz spustit (statická verze ovladače).
- Větší složitost
Dosud žádný komentář.