Планета гаджетов / технологий
Nesse vídeo apresento uma maneira de implementar o design pattern Injeção de Dependência no Android, utilizando a lib Dagger 2 que é mantida pelo Google. Logo no início do vídeo explico o que é o design pattern Injeção de Dependência (simples de entender), as vantagens ao uso desse pattern ao invés de outras abordagens para obtenção de objetos, como: Construtores de classes e Factory design pattern, por exemplo. Vantagens (maximização da reutilização de código, testes e manutenção) citadas na documentação do package javax.inject, que também é necessário no trabalho conjunto com a lib Dagger 2 na implementação da Injeção de Dependência.
Importante ressaltar que o Dagger é para o Java, a Injeção de Dependência é um design pattern de programação, para qualquer linguagem.
Para finalizar o post e tentar explicar de uma maneira mais fácil o pattern, pense em sua classe A que tem uma variavel de instancia do tipo classe B, no momento sua classe A está instanciando a classe B dentro do construtor dela, isso é um exemplo de uma dependência forte e forte acomplamento entre as entidades, ocasionando maior quantidade de código alterado quando somente a entidade B precisa sofrer atualização (perdendo em manutenção) , perda de reuso de código, onde somente a entidade A era necessária e a perda de eficiencia em testes unitários, tendo em mente que a criação de entidades fakes de testes será ainda mais complexa devido a forte dependência. Porém modificando um pouco a classe, digo, permitindo que a classe A apenas receba uma entidade B já construída fora da classe A, já é um grande ganho no código, implementando assim a Injeção de Dependência. Porém mesmo com o design pattern implementado ainda há «n» outros problemas a serem resolvidos, isso é o que o Dagger vem também resolver. Sem mais delongas vou deixar você assistir ao vídeo. Note que a principal vantagem do Dagger 2 em relação ao Dagger 1 é não utilização de Instrospection e Reflection que causam perda de eficiência.
Segue link do post no Blog: http://www.thiengo.com.br/injecao-de-dependencia-com-a-lib-dagger-2-no-android
Segue link do project no GitHub: https://github.com/viniciusthiengo/dagger-2-example
Segue link do post comentado no vídeo:
ButterKnife Lib, Simplificando Acesso a Views no Android (http://www.thiengo.com.br/butterknife-lib-simplificando-acesso-a-views-no-android)
Segue links dos resursos utilizados para construir o vídeo:
Página oficial da lib Dagger 2 (https://google.github.io/dagger/)
Página oficial do package javax.inject (http://docs.oracle.com/javaee/7/api/javax/inject/package-summary.html#package.description)
Post «Tasting Dagger 2 on Android» do Blog Fernando Cejas (http:// fernandocejas.com/2015/04/11/tasting-dagger-2-on-android/)
Post «Dagger 2.0 Android migration tips» do Blog Siphon9 (http://siphon9.net/loune/)
Primeiro post (de três) da série «Dependency Injection on Android: Dagger» do Blog Antonio Leva (http://antonioleiva.com/dependency-injection-android-dagger-part-1/)
Post resposta no stackoverflow sobre o que é Reflection (não esqueça de ler o comentário com mais up votes) (http://stackoverflow.com/a/37632/2578331)
Post «Dependency Injection With Dagger 2 on Android» do Blog do portal Tuts+ (http://code.tutsplus.com/tutorials/dependency-injection-with-dagger-2-on-android—cms-23345)
Bitbucket do android-apt plugin ( https://bitbucket.org/hvisser/android-apt)
Post «Dependency Injection With Dagger 2» em Codepath (https://guides.codepath.com/android/Dependency-Injection-with-Dagger-2)
Vídeo «Dependency Injection With Dagger 2» em SlideNerd YouTube channel (https://www.youtube.com/watch?v=SKFB8u0-VA0)
Post «Dependency Injection» no blog Jenkov.com (http://tutorials.jenkov.com/dependency-injection/index.html)
Vídeo «Dependency Injection» Anthony Ferrara YouTube channel (https://www.youtube.com/watch?v=IKD2-MAkXyQ)
Vlw
Meu livro de programação: https://thiengo.birdingbox.com/lp/livro-refatorando-para-programas-limpos
Código de 20% de desconto na Novatec ( http://novatec.com.br/ ) : THIENGO
APP do Blog: https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
Siga no Google Plus: https://plus.google.com/+ThiengoCalopsita
Siga no Twitter: https://twitter.com/thiengoCalops
Curta no Facebook: https://www.facebook.com/thiengoCalopsita
Источник