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)