Wednesday, June 15, 2016

Android MVP Pattern

Pada blog kali ini saya akan membahas  tentang MVP (Model View Pattern) di Android. MVP merupakan salah satu pattern yg cukup popular.

Pada saat mengembangkan aplikasi Android saya mempunya masalah bahwa Android Activity dieratkan dengan interface (callback) dan mekanisme akses data sehingga menjadi tight coupling dan menjadi sulit di maintain. MVP membuat View menjadi independent dari data layer.

Sebelum memulai lebih baik membaca artikel tentang Event bus Android dan Reactive Programming. Reactive Programming (RxJava) menjadi inti disini karean kita berkomunkasi melalui konsep ini. RxJava sendiri adalah bagian dari library yang dikembangkan oleh ReactiveX, dimana kegunaan library ini bertujuan untuk melakukan proses asynchronous pada sebuah program dengan konsep observables sequence.




Penjelasan MVP:
  • Presenter
    • Presenter bertanggung jawab untuk berkomunikasi dengan view dan model. Presenter menerima data dari model dan memanggil method di view. Presenter subscribe ke Observables yang ada di Data Manager dan berkomunikasi. Serta presenter harus bisa melakukan schedulars dan subscriptions.
  • View
    • Menghandle behavior dan manipulasi UI (Activity atau Fragment). Dan menerima callback dari presenter untuk melakukan action tertentu. 
  • Model
    • Model adalah sebagai data layer untuk berkomunikasi ke local storage atau server. Data Manager merupakan inti dari arsitektur ini. Menggunakan rxjava operator untuk berkomunikasi ke Helper Class dan Presenter layar.

Why is this approach better ?

  • RxJava Observables and operators menghapus kebutuhan untuk memiliki nested callback.

  • Data Manager meringankan beban activity dan fragment. Dimana data manager melakukan http request ke server atau mengambil data ke local storage.
  • Activity dan fragment menjadi ringan karena hanya bertugas untuk update UI dan handle user event.
  • Setiap layer memeliki tugasnya masing - masing sehingga membuat arsitektur menjadi test-friendly.
Untuk implementasi-nya silahkan tunggu di blog saya berikutnya.

Sumber:
http://antonioleiva.com/mvp-android/
https://labs.ribot.co.uk/android-application-architecture-8b6e34acda65#.jtccesiud


No comments:

Post a Comment