O que é inversão de controle?

5 respostas
P

Não sei se eu entendi direito esse padrão de inversão de controle, li vários artigos inclusive o do http://martinfowler.com/. Pelo que eu entendi no caso o framework e responsável por criar instâncias dos beans e injetar nos métodos respectivos dos meus outros beans, ou seja passando a referencia dos objetos para os métodos. Seria isso? ou estou errado?

Atenciosamente

Paulo Vinícius

5 Respostas

D

Sim.


G

paulofafism:
Não sei se eu entendi direito esse padrão de inversão de controle, li vários artigos inclusive o do http://martinfowler.com/. Pelo que eu entendi no caso o framework e responsável por criar instâncias dos beans e injetar nos métodos respectivos dos meus outros beans, ou seja passando a referencia dos objetos para os métodos. Seria isso? ou estou errado?

Atenciosamente

Paulo Vinícius

Normalmente é o próprio objeto que cria suas dependências e tem controle sobre isto. Com a inversão de controle esta tarefa é delegada para algo externo ao próprio objeto, sendo que o próprio objeto perde o controle sobre a sua construção. Por isso o nome é inversão de controle…

Isto é uma boa prática pois desacopla o objeto de suas dependências, dando uma maior flexibilidade e aumentando a reusabilidade da classe.

P
Normalmente é o próprio objeto que cria suas dependências e tem controle sobre isto. Com a inversão de controle esta tarefa é delegada para algo externo ao próprio objeto, sendo que o próprio objeto perde o controle sobre a sua construção. Por isso o nome é inversão de controle...

Isto é uma boa prática pois desacopla o objeto de suas dependências, dando uma maior flexibilidade e aumentando a reusabilidade da classe.

//Então por exemplo ao invés deu fizer
public class Empresa{
       Vendedor vendedor;

       public Empresa(){

            vendedor = new Vendedor();
       }
}

//eu faria a Injeção de Dependencia assim deixando um objeto externo criar a depência ou seja a instância do objeto Vendedor
public class Empresa{
            Vendedor vendedor;
            public Empresa(){

            }
             
            public void setVendedor(Vendedor vendedor){
                this.vendedor = vendedor;
            }     

}
G

Isso! A idéia básica é esta mesma!

Os frameworks de inversão de controle, como o Spring, permite que você configure estas dependências a partir de um descritor XML.

P

Isso! A idéia básica é esta mesma!

Os frameworks de inversão de controle, como o Spring, permite que você configure estas dependências a partir de um descritor XML.

Acho que entendi então. Andei dando uma olha no framework Spring ele faz injeção de uma forma simples e deixando o codigo mais claro para o usuário ao invés de ficar instânciando o objeto via new, no caso do spring ele instância via reflection. Acho que ja to pegando o esquema no padrão IoC. ehehheee
Obrigado pela ajuda

Criado 28 de março de 2007
Ultima resposta 29 de mar. de 2007
Respostas 5
Participantes 3