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

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!

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.

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

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

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

sim… É injeção de dependencias…

muito obrigado!

sim… É injeção de dependencias…

muito obrigado!