Injeção de dependência: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Desfeita a edição 49949158 de 201.81.2.82 +correções semiautomáticas (v0.53/3.1.39/1.101)
Gfc (discussão | contribs)
Revisão geral, eliminação de parágrafo desnecessário (e que não tinha pouco ou nada a ver com o assunto), eliminação de referências externas quando há verbetes na WK, eliminação de propaganda de framework do próprio editor ou inexpressivos.
Linha 1:
'''Injeção de dependência''' (''Dependency Injection'', em inglês) é um padrão de desenvolvimento de [[Programação de computadores|programas de computadores]] utilizado quando é necessário manter baixo o nível de [[Acoplamento (programação de computadores)|acoplamento]] entre diferentes módulos de um sistema. Nesta solução as dependências entre os módulos não são definidas programaticamente, mas sim pela configuração de uma infraestrutura de software (''[[container (programação)|container]]'') que é responsável por "injetar" em cada componente suas dependências declaradas. A Injeção de dependência se relaciona com o padrão [[Inversão de controle]] mas não pode ser considerada um sinônimo deste.
 
Alguns dos ''[[Framework|frameworks]]'' mais utilizados que fazem uso de injeção de dependência são o [[Spring Framework|Spring]], o [[Laravel]] e o [[AngularJS]].
Com a utilização da injeção de dependência os objetos não precisam mais ficar responsáveis por controlar seu próprio ciclo de vida, como acontece com o padrão de projeto [[Singleton]] que pode até ser considerado um [[Antipadrões de projeto de software|anti-pattern]] já que fere o [[principio de responsabilidade unica]].
 
Hoje no mercado existem diversos frameworks, de várias linguagens de programação diferentes, que implementam o conceito de injeção de dependência. Dentre esses podem ser citados, Weld, Guice<ref>{{Citar web|url=https://github.com/google/guice|titulo=google/guice|acessodata=2017-05-09|obra=GitHub|lingua=en}}</ref>, PHP-DI<ref>{{Citar web|url=http://php-di.org/|titulo=PHP-DI - The Dependency Injection Container for humans|acessodata=2017-05-09|obra=php-di.org}}</ref> e PyCDI<ref>{{Citar web|url=https://github.com/ettoreleandrotognoli/python-cdi|titulo=ettoreleandrotognoli/python-cdi|acessodata=2017-05-09|obra=GitHub|lingua=en}}</ref>. Também existem frameworks de propósitos mais gerais que fazem uso de injeção de dependência como o Spring, o Laravel<ref>{{Citar web|url=https://laravel.com/docs/5.4/container|titulo=Service Container - Laravel - The PHP Framework For Web Artisans|acessodata=2017-05-09|obra=laravel.com|ultimo=Otwell|primeiro=Taylor}}</ref> e o AngularJS<ref>{{Citar web|url=https://docs.angularjs.org/guide/di|titulo=AngularJS|acessodata=2017-05-09|obra=docs.angularjs.org|lingua=en}}</ref>.
 
{{Referências}}
Linha 10 ⟶ 8:
* [[MVC]]
* [[Spring Framework]]
* [[SOLIDLaravel]]
* [[AngularJS]]
 
== Ligações externas ==
* [http://www.martinfowler.com/articles/injection.html Inversion of Control Containers and the Dependency Injection Pattern] (ou sua versão em [http://www.javafree.org/content/view.jf?idContent=1 Português]).
* [http://www.javafree.org/content/view.jf?idContent=1 Inversion Of Control - Containers de Inversão de Controle e o padrão Dependency Injection (21699)]
* [http://www.picocontainer.org/ Pico Container]
* [http://code.google.com/p/pococapsule PocoCapsule C++ IoC container]
* [http://excalibur.apache.org/fortress/index.html Excalibur Fortress]
* [http://miocc.itextosoft.com.br/ miocc - Microscopic Inversion of Control Container]
 
[[Categoria:Programação orientada a objetos]]