Service-Locator
Ein Service-Locator (englisch service locator) oder Resource-Locator (englisch resource locator) ist ein von Martin Fowler vorgestelltes Architekturmuster der Softwareentwicklung.[1] Beim Service-Locator gibt es ein zentrales Objekt, die Registrierung (englisch registry), welche auf Anfrage nach einem bestimmten Objekttyp ein entsprechendes Objekt zurückliefert.[2]
Service-Locators werden eingesetzt,
- um die Dependency-Injection zu bootstrappen, d. h. als Zwischenschritt im Refactoring, um eine Anwendung von festen Abhängigkeiten auf Dependency-Injection umzustellen, oder
- um eine dynamische Rekonfigurierung der zu ladenden Objekte während der Laufzeit zu bieten,
- wenn sie durch ein verwendetes Framework erzwungen werden.
Service-Locator als Anti-Pattern
Häufig wird ein Service-Locator von unerfahrenen Entwicklern anstatt von Dependency-Injection verwendet. Dies liegt darin begründet, dass sich Dependency-Injection-Frameworks auch zur Implementierung von Service-Locators eignen. Ein Service-Locator hat jedoch den Nachteil, dass Abhängigkeiten versteckt werden. Durch die versteckten Abhängigkeiten wird es schwerer den Code zu testen und Refactorings durchzuführen. Zudem treten Fehler in der Konfiguration erst zur Laufzeit auf. In diesem Kontext gilt das Service-Locator-Muster daher als Anti-Pattern.[1]
Einzelnachweise
- ↑ a b Daniel Baharestani: Mastering Ninject for Dependency Injection. Packt Publishing, 2013, ISBN 978-1-78216-620-7 (englisch, 142 S.).
- ↑ Martin Fowler: Inversion of Control Containers and the Dependency Injection pattern. 23. Januar 2004, abgerufen am 25. März 2017 (englisch).
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.