martes, 8 de abril de 2014

Patrón Service Locator en C#

Ejemplo de patrón Service Locator en C#

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