«

»

Apr 26

Print this Post

Entendendo Injeção de Dependências

O que é a Injeção de Dependência?

A injeção de dependência é um design pattern que tem o intuito de desacoplar os objetos da aplicação. Os Objetos são instanciados do lado de fora da classe. Deve ser feito um gerenciador para essas instâncias. Esse gerenciador, conecta os objetos de forma a permitir que a aplicação use cadas instância seja necessária, ou seja, utilizamos a Injeção de Dependência quando é necessário manter baixo o nível de acoplamento entre diferentes módulos de uma aplicação.

A Injeção de Dependências nos permite ter um controle total do nosso core, já que se precisarmos modificar toda uma interface, o core fica intacto e funcionará corretamente com a nova interface. Além de em caso de uma modificação em um módulo, não afetar os demais módulos, já que os mesmos não tem um acoplamento dependente, simplesmente requerem o objeto instanciado para ser usado nas suas necessidades.

Quando Usar

No artigo sobre Composição ou Herança e sobre Inversão de Controles falamos sobre Injeção de Dependências.

Quando precisamos da instância do objeto de forma externa e não precisamos ter instanciado dentro da classe, adotamos a Injeção de Dependências.

Um exemplo prático poderia ser, uma implementação de uma aplicação, onde o core da busca dos resultados, sejam feitas por um algorítimo de terceiros, onde os mesmos não querem compartilhar o código e simplesmente enviam para você o objeto já instanciado para você executar a busca.

Você teria um método:

<cfscript>
this.services = Application.factory.getDAO("Busca");
public ResultadoBusca function executarBusca( Autenticacao autenticacao , CoreBusca core ) {
	return this.dao.services.WSBusca( autenticacao.getAutenticacaoWebService() , core.getDadosBusca() );
}
</cfscript>

Usamos no método executarBusca() da nossa classe fictícia Buscar() dos parâmetros que fazer Injeção de Dependências, estamos injetando o objeto Autenticacao e o Objeto CoreBusca. Que trata-se do algorítimo que informei.

Falei desse exemplo, pois a algum tempo, trabalhei num projeto, onde a página inicial do site, apresentava produtos que seguiam algumas características do usuário. Exemplo, se o cliente tivesse o costume de comprar, perfumes, sapatos nike e fraldas descartaves pampers tamanho G.

Na home carregava produtos relacionados a esses gostos, e mais, se o cliente comprou uma fralda pampers G a 3 meses, o site traria depois desse tempo, fraldas XG, pois o algorítimo que montava a capa, era inteligente ao ponto de saber que com 3 meses o provável filho do usuário, já vestiria XG.

Esse mapeamento dos produtos que eram listados, era feito por uma API DLL que ninguém tinha acesso, e usávamos Injeção de Dependência para buscar os produtos da capa.

Em outras linguagens como Java por exemplo, existem alguns frameworks que auxiliam na Injeção de Dependências como o Google Guice, mas é simples fazer sem a ajuda de frameworks, só que quem vai controlar as instâncias será você mesmo.

Você pode ver outras abordagens sobre DI (Dependency Injection) nos artigos abaixo:

Por Paulo Teixeira
Post original

 

Permanent link to this article: https://ensina.me/coldfusion/entendendo-injecao-de-dependencias/

Leave a Reply