[MÚSICA]
Vamos agora dar uma olhada penetrante na injeção de dependência.
O que exatamente é injeção de dependência e como ela é relevante para Angular?
Vamos falar sobre isso a seguir.
Então, o que exatamente é injeção de dependência?
Injeção de dependência É um padrão de design de software.
Este é um padrão que é útil para implementar aplicativos onde você tem
um objeto que é dependente de outro objeto de uma maneira que é eficiente.
Agora, a Injeção de Dependência, como percebemos, tem duas partes.
Dependência e injeção.
Vamos falar sobre a dependência primeiro.
Dependência significa que seu objeto depende de outro objeto.
Então, é por isso que é uma dependência entre seu objeto e outro objeto.
Injeção está falando sobre passar a dependência para um objeto dependente.
Então, se você tem um objeto, se há um mecanismo que permite
você ser capaz de pegar um objeto e, em seguida, torná-lo disponível para um segundo objeto, de modo
que o outro objeto pode fazer uso dele sem estar ciente de
exatamente como o primeiro objeto é implementado ou limpo.
Assim, neste caso, o objeto que é dependente não está ciente,
ou não precisa se preocupar com como o outro objeto é implementado.
Ele só precisa fazer uso dele, dentro do seu objeto, onde quer que ele esteja.
Dependency Injection foi cunhada por Martin Fowler em 2004.
E é um design de software útil enfatizando ainda mais a dependência.
Se um objeto for dependente de outro objeto
, há três maneiras de acessar o outro objeto.
1, Ele pode criar o próprio objeto dependente usando o novo operador
você viu isso no caso de classes.
Então, por exemplo, se você precisar de um novo objeto de um tipo de classe,
então você cria esse objeto usando o novo dentro de linguagens, como C++ ou
Java, e até mesmo digite script.
Em seguida, você pode fazer uso desse objeto específico.
A outra maneira é declarar o outro objeto como uma variável global, e
então você procurar a dependência usando a variável global.
A terceira maneira de fazer isso é ter a dependência passada para você,
onde quer que seja necessário.
Então, se você é dependente de outra coisa, então essa outra coisa será
injetada em você por um sistema onde quer que seja necessário.
Então, agora a terceira opção lhe dá muita flexibilidade na forma
que o software é projetado.
Assim, nesta abordagem, na terceira abordagem,
não há necessidade de codificação dura após dependência.
Nas duas primeiras abordagens, a dependência é codificada lá,
porque você precisa estar totalmente ciente de como você cria
o objeto do qual você é dependente, dentro do seu próprio objeto.
No terceiro objeto,
porque o outro objeto está sendo injetado em você sempre que você precisar dele,
você realmente não se importa como ele é criado, desde que você tenha acesso a ele.
E a outra vantagem que essa abordagem traz é que
facilita a facilidade de testar seu aplicativo porque quando você
precisa de um objeto do qual você é dependente, em vez de passar em
o objeto dependente você pode até criar um objeto simulado do tipo e
, em seguida, passá-lo em para testar seu objeto específico.
Esta separação entre o objeto dependente eo outro objeto é muito,
muito útil como percebemos na realização de testes.
Discutiremos isso brevemente quando olharmos para testes angulares mais tarde neste curso.
Dependency Injection traz cerca de quatro papéis diferentes que precisamos considerar.
Primeiro é claro o serviço que você vai fazer uso dentro
seu componente, por exemplo, e que precisa ser injetado em.
Segundo o cliente que é dependente do serviço
que neste caso é o seu componente.
Terceiro, a interface, uma vez injetado como você faz uso desse serviço.
E finalmente o injetor, a entidade responsável por
injetar esse objeto em seu objeto.
Como você vai perceber em breve,
injeção de dependência expressa angular muito na forma como ele é implementado.
Então isso é o que facilita a separação de uma lógica de negócios
da construção de dependência para que você possa escrever sua lógica de negócios em
o objeto independente e, em seguida, injetá-los onde quer que seja necessário.
E a dependência é passar para o objeto que está consumindo
onde quer que seja necessário.
Agora, como esta injeção é cuidada?
Esta injecção é cuidada pelo subsistema de injecção angular.
O subsistema de injeção angular cuida da criação desses serviços e
, em seguida, injetá-los em seu componente onde você precisar deles.
Assim, ele também cuida de resolver as dependências e também,
fornecendo esses objetos para outros componentes que exigem esses objetos.
Assim, o subsistema injetor angular fornece todos esses mecanismos para
nós habilitar isso.
Como realmente funciona?
Vamos olhar para isso no exercício que se segue,
onde usaremos um serviço que criamos nos componentes
que projetamos para nossa aplicação Angular.
[MÚSICA]