Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dependency Injection w Androidzie

1,313 views

Published on

Andrzej Szmajnta - Sztyletem w serce - DI vs zielony robocik

http://www.tsh.io

Dependency Injection omówione w kontekście aplikacji na Androida.​ ​Wykorzystanie biblioteki Dagger do wstrzykiwania zależności, konfiguracja i przykłady.

Prezentacja z meetupu http://www.meetup.com/Uszanowanko-Programowanko/events/233585217/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Dependency Injection w Androidzie

  1. 1. Sztyletem w serce DI vs zielony robocik Andrzej Szmajnta Android Developer
  2. 2. Kod napisany SOLIDnie Pięć założeń programowania obiektowego zaproponowanych przez Roberta C. Martina S - (SRP) - zasada jednej odpowiedzialności O - (OCP) - zasada otwarte-zamknięte L - (LSP) - zasada podstawienia Liskov I - (ISP) - zasada segregowania interfejsów D - (DIP) - zasada odwrócenia zależności
  3. 3. Przykład z życia (zbieżność imion przypadkowa) Rząd pani Beaty Piotruś, min. kultury Antek, min. obrony Zbyszek, min. dyktafonu wybiera wybiera wybiera Jarosław informuje NIGDY W ŻYCIU!
  4. 4. Przykład z życia (zbieżność imion przypadkowa) Rząd pani Beaty Piotruś, min. kultury Antek, min. obrony Zbyszek, min. dyktafonu wybiera wybiera wybiera Jarosław daje do zrozumienia DOSKONALE!
  5. 5. DI - dependency injection jest rozwiązaniem projektowym, często określanym jako wzorcem projektowym, który pozwala na tworzenie kodu o luźniejszych powiązaniach, łatwiejszego w testowaniu i modyfikacji. Jest implementacją zasady odwrócenia sterowania. Co o tym mówi Wikipedia
  6. 6. ŹLE! Przykład z kodu
  7. 7. BARDZO DOBRZE! Przykład z kodu
  8. 8. BARDZO DOBRZE! Przykład z kodu 2/10
  9. 9. ROZWIĄZANIE GODNE NINJA MASTA DEVELOPERA
  10. 10. TweeterClientTweeterApiInterface TweeterRestApiV1 TweeterMockApi TweeterRestApiV2
  11. 11. TweeterClientTweeterApiInterface TweeterRestApiV1 TweeterMockApi TweeterRestApiV2
  12. 12. Android, MVP LoginActivity LoginPresenter AuthenticationRepo NetworkLibrary UserSession SharedPreferences NetworkClientJSONParser TokenRefresher NetworkLogger
  13. 13. Android, MVP i DI
  14. 14. Nieładnie? A co jeśli Wam powiem, że jest biblioteka która zrobi to za nas?
  15. 15. Nieładnie? A co jeśli Wam powiem, że jest biblioteka która zrobi to za nas?
  16. 16. Dagger 2 na pomoc!
  17. 17. Android, MVP i DI + Dagger 2 Fajnie? Ale po kolei...
  18. 18. Dagger 2 - Instalacja Plik build.gradle apply plugin: 'com.neenbedankt.android-apt' dependencies { compile 'com.google.dagger:dagger:2.x' apt 'com.google.dagger:dagger-compiler:2.x' provided 'javax.annotation:jsr250-api:1.0' }
  19. 19. Dagger 2 - @Inject ● Adnotacja zgodna ze standardem JSR-330 (czyli nic nowego) ● Wskazuje miejsce wstrzyknięcia zależności ● Może być dodane do nie-prywatnych pól, metod oraz konstruktorów
  20. 20. Dagger 2 - @Module + @Provides ● @Module dodawany do klasy dostarczającej zależności ● @Provides dodawany do każdej metody modułu, która ma dostarczać zależności (bo nie każda musi)
  21. 21. Dagger 2 - @Component ● Interfejs ● Most pomiędzy @Module i @Injectem ● Na podstawie klasy z adnotacją tworzony jest injector ● Musi wiedzieć, jakimi modułami dysponuje ● Rejestruje odbiorców zależności
  22. 22. Dagger 2 - @Scope ● Określa cykl życia tworzonej adnotacji ● Podstawowy to @Singleton ● Można tworzyć własne i dodać do metod z @Provides ● Najczęściej własne to @PerApp, @PerActivity, @PerFragment
  23. 23. Z kodu wzięte!
  24. 24. Dagger 2 i LoginActivity Android Studio
  25. 25. Podsumowanie
  26. 26. Dziękuje za uwagę! Podsumowanie

×