2011-09-14 14 views
5

Service Locator parece ser un concepto bastante útil y me gustaría implementarlo en mi aplicación. Sin embargo, tengo algunas preguntas sobre cómo se debe implementar y cómo se debe usar junto con otros paradigmas de programación.Con respecto al Service Locator Pattern

  1. ¿Debería el SL gestionar el servicio que está almacenando? Es decir, cuando el SL se destruye, ¿debería también destruir el servicio en sí mismo, o debería dejarlo a quien registrara el servicio?

  2. ¿Qué hay de Dependency Injection? Ahora que tengo una SL, ¿hay algún punto para pasar la SL como parámetro o debería acceder a ella globalmente? Después de todo, gran parte del propósito de DI está cubierto por SL también, y no me gustaría saturar muchas de mis funciones con un parámetro más.

Respuesta

8

Se podría pensar que escribí este artículo (yo no), teniendo en cuenta la frecuencia con la que me refiero es:

Service Locator is an Anti-Pattern

inyección de dependencia hace que sus dependencias explícita. Service Location los entierra en la implementación y crea una dependencia dura de su localizador.

+2

Excelente artículo para C# y Java pero no tan genial para C++. C++ ofrece construcciones (por ejemplo, operadores nuevos y eliminados sobrecargados) sin forma de inyectar dependencia. –

+0

El artículo es sobre java - no C++, por lo tanto, no es muy útil. –

Cuestiones relacionadas