O que seria a inversão de dependencia em um contexto global?

5 respostas
Zakim

nos exemplos que vi, percebi que a famosa inversão de dependencias está diretamente relacionada a frase “Programe para a interface e nao para a implementação”

ja vi exemplos simples e tudo mais… Mas o que eu gostaria mesmo de saber é como que o Spring trata isso.
Essa inversão de dependencia é feita uma vez só? ou ela funciona separadamente como os actions do Struts?

alguem tem um link legal que não seja do artigo do Martin Fowler (já li).

obrigado!

5 Respostas

Abdon

Ola,

vc esta confundindo dois conceitos, totalmente diferentes, so que utilizados em conjuto.
Não existe inversão de dependencia.

O que existe é inversão de controle e injeção de dependencia.

A grosso modo, inversão de controle é um conceito presente em todos os frameworks, que significa que alguem, alguma infra esta chamado o metodo que vc criou, se vc já fez um callback em vb para tratamento de evento vc já fez um inversão de controle.

Injeção de dependencia é quando um objeto agregado ganha a sua instancia (delegação) de forma transparente ao objeto que esta o utilizando, para isto se usa framewoks como spring e pico container.

Abdon

Com a relação a frase “Programe para a interface e nao para a implementação”, sou tentar descrever com um exemplo abaixo:

public interface Juros{
          double calculaJuros(/*parametros*/);
}

Obviamente juros são calculados de forma diferentes, para casos diferentes, como por ex: Credito pessoal do seu banco ou comparar um casa.
Vamos pegar o exemplo do credito pessoal

public class CreditoPessoal {
      
      //get e set omitidos
      private Juros juros;
      
      //metodo que informado o valor devolve o juros.
      public double calculaJuros(double valor) {
           juros.calculaJuros(/*parametros*/);
      }
}

Note que a classe CreditoPessoal depende da classe juros. Agora quando formos instanciar a classe CreditoPessoal, poderíamos usar, por ex, o Pico container, que injetaria a dependência, que é a instancia correta da classe juros, deixando isto transparente para vc, facilitando e muito a flexibilidade deste algoritmo

pcalcado

Existe sim e é um conceito relacionado, mas provavelmente ele se confundiu mesmo.

www.objectmentor.com/resources/articles/dip.pdf

Zakim

sim… É injeção de dependencias…

muito obrigado!

Zakim

sim… É injeção de dependencias…

muito obrigado!

Criado 19 de setembro de 2007
Ultima resposta 19 de set. de 2007
Respostas 5
Participantes 3