April 05
Prof. Ismael H. F. Santos -  ismael@tecgraf.puc-rio.br                                                          2
nExemplo: Gerência de cadastro de filmes (cont.)
nCaso a classe MovieLister instanciasse diretamente (através da chamada de new MovieFinderImpl) um objeto do tipo MovieFinder, perderíamos a capacidade de tornar MovieFinder “plugável”.
nA interface MovieFinder é, portanto, um contrato ou um padrão a ser seguido por quem deseja criar “Buscadores” de filmes, de forma que um módulo separado, o Assembler, possa injetar esta implementação em MovieLister. Podemos, desta forma, criar programas no qual as partes que o compõem são plugins gerenciados pelo Assembler.
nBasicamente, existem dois tipos de injeção de dependência: Constructor Injection e Setter Injection. No primeiro tipo, Constructor Injection, a dependência é resolvida através de um construtor do objeto a receber o objeto dependente (veja slide anterior)
Inversion of Control (Dependency Injection)