Szolgáltatáslokátor
Megjelenés
A szolgáltatáslokátor egy programtervezési minta a számítógép-programozásban. Arra használják, hogy a szolgáltatás megszerzését egy erős absztrakciójú rétegbe tegyék. Az objektumok egy központi adattárat használnak, ami kérésre megadja az igényelt szolgáltatás eléréséhez szükséges információt.[1] Ez egy vitatott minta, vannak, akik antimintának tekintik.[2]
Előnyei
- A szolgáltatáslokátor futási idejű linkerként működhet. Lehetővé teszi újabb információk hozzáadását újrafordítás nélkül, sőt, egyes esetekben még újraindítani sem kell.
- Az alkalmazások futásidőben optimalizálhatják magukat elemek szelektív hozzáadásával és eltávolításával. Például egy szolgáltatás észlelheti, hogy van egy jobb JPG olvasó könyvtár, és megváltoztathatja eszerint a nyilvántartást.
- Egy könyvtár vagy szolgáltatás elemei teljesen elkülöníthetők egymástól. Közöttük egyedül a nyilvántartás jelent kapcsolatot.
Hátrányai
- A nyilvántartásban szereplő objektumok fekete dobozok a többi objektum számára. Nehezebb a hibáik felismerése, nyomon követése, kezelése.
- A szolgáltatáslokátornak egykének kell lennie, ami konkurrens esetekben palacknyakhatást eredményez.
- Ha a szolgáltatáslokátor lehetővé teszi, hogy kívülállók injektáljanak kódot az alkalmazásba, akkor biztonsági kockázatokat is hordoz.
- A függőségek elrejtése futásidejű hibákká teszi azokat a fordításidejű hibákat, amelyek azt jelzik, hogy függőségek hiányoznak.
- A szolgáltatáslokátor a dependency injectionnel szemben megnehezíti a karbantartást, mivel nehezebb megtalálni, hogy mit tört el a módosítás.
- Nehezebb a tesztelés, mivel mindegyik tesztnek ugyanazzal a szolgáltatáslokátorral kell együttműködnie. Ez azonban megkerülhető, ha az alkalmazó osztályokba egy szolgáltatáslokátor interfészt injektálnak.
Jegyzetek
- ↑ http://martinfowler.com/articles/injection.html#UsingAServiceLocator
- ↑ Seemann, Mark: Service Locator is an Anti-Pattern (angol nyelven). blog.ploeh.dk . (Hozzáférés: 2017. június 1.)
Források
- Sample code
- In Defense of Service Locator
- Game Programming Patterns: Service Locator
- Dependencies In Disguise
Fordítás
Ez a szócikk részben vagy egészben a Service locator pattern című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.