Para aplicar el principio de inversión de dependencias, son muy conocidos los contenedores IoC y la inyección de dependencias, otra forma de aplicar el principio, es crearse un repositorio donde parametrizar la creación de objetos, y llamar a este repositorio dentro de la clase que lo necesite, sin inyectarlo a través del constructor.
Utilizar un repositorio de este tipo es conocido cómo el patrón "Service Locator", a continución se muestra un sencillo ejemplo de uso e implementación.
Dada una interfaz de objetos:
public interface InterfaceX
, y una clase Y, que necesita utilizar un objecto de la InterfaceX, podemos aplicar el patrón de inversión de dependencias aplicando el patrón Service Locator, de la siguiente forma:
public class Y{
public InterfaceX data { get; set; }
public Y()
{
//aplicar el patrón Service Locator con el método GetObject
//de la clase ServiceLocator_InterfaceX definida abajo
data = ServiceLocator_InterfaceX.GetObject("ClaseX1");
}
}
Implementación del repositorio Service Loctor
public static class ServiceLocator_InterfaceX
{
public static InterfaceX GetObject(string ObjectName)
{
switch (ObjectName){
case "ClaseX1":
return new ClaseX1();
default:
break;
}
return new ClaseXDefault();
}
}
No hay comentarios:
Publicar un comentario