none
Dúvida sobre Dependency Injection RRS feed

  • Pergunta

  • Boa tarde estava lendo um artigo sobre 'Dependency Injection', no qual achei muito interessante.

    Mas surgiu algumas duvídas referente a forma que ela foi feita.

    O Autor criou uma Interface e implementou duas classes, até ai tudo normal

     IDomainObjectInterface interface pública
     {
         string Name {get;}
     }
    
    public class ImplementationClass1 : IDomainObjectInterface {
        public ImplementationClass1(){}
        public string Name
        {
            get { return "Implementation Class 1"; }  
        }
    }
    
    public class ImplementationClass2 : IDomainObjectInterface {
        public ImplementationClass2(){}
        public string Name
        {
            get { return "Implementation Class 2"; }
        }
    }mentation Class 2"; }    }}

    Aqui ele cria uma 'Fabrica', que faz a instancia do objeto de acordo com a propriedade que está configurada no arquivo
    [config.xml], é aqui que surgiu minha duvida.

    É viavel utilizar dessa forma eu nunca tinha visto algo parecido, é recomendado? existe outras forma de realizar essa
    mesma funcionalidade?

    class ConsoleRunner
    {
        static void Main()
        {
             // 1.  Abre o arquivo de configuração e criar um novo
             // Fábrica, leitura nas definições de objetos
            using (Stream stream = File.OpenRead("config.xml"))
             {
                // 2.  Criar um novo objeto de fábrica
                XmlObjectFactory xmlObjectFactory = new XmlObjectFactory(stream);
                
                 // 3.  Chamar meu classe de fábrica com a etiqueta genérica para o objeto
                 // Que é solicitado. 
                IDomainObjectInterface domainObjectInterface = 
                    (IDomainObjectInterface)xmlObjectFactory.
                    GetObject("DomainObjectImplementationClass");
    
                // 4.  Use o objeto como qualquer outra classe de concreto.
                Console.WriteLine("My name is " + domainObjectInterface.Name);
            }
        }
    }

    Arquivo de configuração.

    <?xml version="1.0" encoding="utf-8" ?>
    <objects xmlns="http://www.springframework.net">
        <object name="DomainObjectImplementationClass" 
                singleton="false" 
                type="ImplementationClass1, SpringDIExample" />
    </objects>
    
    

    Segue o link do artigo 'http://msdn.microsoft.com/en-us/magazine/cc163739.aspx'.

    Desde já obrigado.

    sexta-feira, 15 de fevereiro de 2013 18:22

Respostas

Todas as Respostas