Ugrás a tartalomhoz

Szolgáltatáslokátor

A Wikipédiából, a szabad enciklopédiából
A lap korábbi változatát látod, amilyen InternetArchiveBot (vitalap | szerkesztései) 2019. május 6., 14:35-kor történt szerkesztése után volt. Ez a változat jelentősen eltérhet az aktuális változattól. (1 forrás archiválása és 0 megjelölése halott linkként. #IABot (v2.0beta14))

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

  1. http://martinfowler.com/articles/injection.html#UsingAServiceLocator
  2. Seemann, Mark: Service Locator is an Anti-Pattern (angol nyelven). blog.ploeh.dk . (Hozzáférés: 2017. június 1.)

Források

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.