Service Locator
Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den
version , der blev gennemgået den 21. oktober 2017; checks kræver
9 redigeringer .
En service locator er et designmønster, der bruges i softwareudvikling til at indkapsle de processer, der er involveret i at opnå en tjeneste med et stærkt abstraktionslag . Dette mønster bruger et centralt register kendt som en "service locator", der, når det anmodes om det, returnerer de oplysninger (normalt objekter ), der er nødvendige for at udføre en specifik opgave [1] . Det er værd at bemærke, at servicelocatoren i nogle tilfælde faktisk er et anti-mønster [2] [3] .
Fordele
Ulemper
- Relationer mellem applikationskomponenter placeret i registreringsdatabasen skjuler afhængighederne af dele af programmet (gør dem ikke-indlysende) og øger systemets kompleksitet. Dette gør det sværere at finde fejl i applikationen og kan gøre det overordnede system mindre pålideligt.
- Registret skal være unikt, hvilket kan blive en flaskehals for at køre flere kopier af applikationen på samme tid.
- Registret kan være en alvorlig sikkerhedssårbarhed , fordi den tillader udefrakommende (herunder angribere) at injicere kode i en applikation.
- Registreringsdatabasen skjuler klasseafhængigheder, der forårsager runtime-fejl, snarere end kompileringsfejl, når compileren rapporterer en fejl i fravær af nødvendige afhængigheder.
- Registret gør koden sværere at vedligeholde (i forhold til at bruge afhængighedsinjektion ), fordi den bliver uklar, når du foretager en fejlagtig registrering i registreringsdatabasen eller går glip af en nødvendig indtastning.
- Registret gør det sværere at teste kode , da alle test skal interagere med den samme globale servicelokaliseringsklasse for at installere falske afhængigheder af klassen, der testes. Dette overvindes dog nemt ved at indsprøjte applikationsklasser med en enkelt servicelokaliseringsgrænseflade.
Se også
Noter
- ↑ Inversion af kontrolbeholdere og afhængighedsinjektionsmønsteret . Hentet 21. oktober 2017. Arkiveret fra originalen 30. maj 2020. (ubestemt)
- ↑ Seemann, Mark Service Locator er et anti- mønster . blog.ploeh.dk . Hentet 1. juni 2017. Arkiveret fra originalen 31. maj 2017.
- ↑ Hall, GML Adaptive Code via C#: Agile kodning med designmønstre og SOLID-principper. - Pearson Education, 2014. - ISBN 9780133979732 .
Links