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