Lokátor služeb
Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od
verze recenzované 21. října 2017; kontroly vyžadují
9 úprav .
Lokátor služeb je návrhový vzor používaný při vývoji softwaru k zapouzdření procesů spojených se získáním služby se silnou abstrakční vrstvou . Tento vzor používá centrální registr známý jako „lokátor služeb“, který na požádání vrátí informace (obvykle objekty ) potřebné k provedení konkrétního úkolu [1] . Stojí za zmínku, že v některých případech je lokátor služeb ve skutečnosti anti-vzor [2] [3] .
Výhody
- „Vyhledávač služeb“ může fungovat jako jednoduchý linker za běhu . To vám umožňuje ovládat programový kód za běhu bez opětovné kompilace aplikace a v některých případech bez nutnosti restartovat ji.
- Aplikace se mohou za běhu optimalizovat selektivním přidáváním a odebíráním prvků z lokátoru služeb. Aplikace může například zjistit, že má lepší knihovnu pro čtení dostupných obrázků JPG než výchozí, a podle toho upravit registr.
- Komponenty aplikace nebo knihovny používané v aplikaci lze zcela oddělit . Jediný vztah mezi nimi je zaznamenán v registru.
Nevýhody
- Vztahy mezi komponentami aplikace umístěnými v registru skrývají závislosti částí programu (nejsou zřejmé) a zvyšují složitost systému. To ztěžuje nalezení chyb v aplikaci a může snížit spolehlivost celého systému.
- Registr musí být jedinečný, což se může stát úzkým hrdlem pro spuštění více kopií aplikace současně.
- Registr může představovat vážnou bezpečnostní chybu , protože umožňuje cizím osobám (včetně útočníků) vložit kód do aplikace.
- Registr skrývá závislosti tříd, které způsobují chyby za běhu, spíše než chyby v době kompilace, když kompilátor hlásí chybu při absenci nezbytných závislostí.
- Registr ztěžuje údržbu kódu (oproti použití dependency injection ), protože se stane nejasným, když v registru uděláte chybný záznam nebo vynecháte nezbytný záznam.
- Registr ztěžuje testování kódu , protože všechny testy musí spolupracovat se stejnou třídou globálního lokátoru služeb, aby bylo možné nainstalovat falešné závislosti testované třídy. To však lze snadno překonat vložením tříd aplikací s jediným rozhraním lokátoru služeb.
Viz také
Poznámky
- ↑ Inverze kontrolních kontejnerů a vzoru Dependency Injection . Získáno 21. října 2017. Archivováno z originálu 30. května 2020. (neurčitý)
- ↑ Seemann, Mark Service Locator je Anti- Pattern . blog.ploeh.dk . Staženo 1. června 2017. Archivováno z originálu 31. května 2017.
- ↑ Hall, GML Adaptive Code přes C#: Agilní kódování s návrhovými vzory a SOLID principy. - Pearson Education, 2014. - ISBN 9780133979732 .
Odkazy