O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Mvp in practice

1.142 visualizações

Publicada em

A introduction for how I implement MVP in android

Publicada em: Software
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

Mvp in practice

  1. 1. MVP In Practice MVP, OOP and Unit test
  2. 2. About me Android developer 2 years+ Name: 洪彥彬 Gitbook: https://www.gitbook.com/book/hungyanbin/android-un it-test/ Github: https://github.com/hungyanbin
  3. 3. Forward
  4. 4. Survey 1. 沒聽過MVP 2. 有聽過MVP 3. 有寫過MVP,但是沒在實際專案用過 4. 有在實際專案部分實行MVP 5. 有在實際專案部分實行MVP,並撰寫單元測試
  5. 5. TA 1. 沒聽過MVP 2. 有聽過MVP 3. 有寫過MVP,但是沒在實際專案用過 4. 有在實際專案部分實行MVP 5. 有在實際專案部分實行MVP,並撰寫單元測試
  6. 6. Won’t mention... 1. Concept of MVP 2. Difference between MVP, MVVM and MVC
  7. 7. I hope you know... 1. Unit Test 2. MVP 3. Object-oriented programming
  8. 8. Step 1 Define Contract
  9. 9. Contract 1. 在實作前就先要定義好 → DIP 2. 定義 View 跟 Presenter 職責 3. Contract 應該要看不到 Android framework 的元件(Bundle, Context) 4. 有關 Android Framework UI 元件,都在 View 實作中解決 5. 有關 Android Framework 非 UI 元件,都在 Model 實作中解決
  10. 10. Sample : Login Page Spec : 1. 可以輸入帳號 2. 可以輸入密碼 3. 點擊登入按鈕後,如果帳密正確,顯示登入成功 4. 點擊登入按鈕後,如果帳密錯誤,顯示登入失敗
  11. 11. Step 2 Implementation
  12. 12. Step 3 Unit test
  13. 13. Too easy?
  14. 14. Let’s make it harder Show error message
  15. 15. Any Problem?
  16. 16. Possible Solution:
  17. 17. Before release... 新需求:使用者登入失敗時告訴他輸入了什麼帳號
  18. 18. Bad smell 1. 透露實作細節 2. 違反DIP(Dependency Inversion Principle) 3. 依然沒有與 Android Framework(StringRes) 分開,而且使用integer來代表字串 不太合理 4. 滿滿的技術債
  19. 19. 讓我們重新思考一下
  20. 20. Create a proxy context.getString() resourceService.getString()
  21. 21. Git diff
  22. 22. What’s the difference?? 1. 將context 的職責分出來,職責更清楚了 2. 可讀性比較高 3. Presenter 與 Android Framework 完全沒關係了
  23. 23. ResourceServiceImp(1)
  24. 24. ApplicationImp(2)
  25. 25. Unit test(3)
  26. 26. Summary
  27. 27. 可能會遇到的實務困難 1. Presenter 與 Model 的職責不好決定 2. Presenter : View 是一對一?多對一?多對多? 3. 與 Android Framework 切不乾淨 4. 不會寫單元測試
  28. 28. 一點點小心得 1. 要不要“全部”用MVP自己決定 2. 使用單元測試會知道自己設計的缺陷

×