Penerapan Design Pattern Arsitektur MVP pada Aplikasi EDC

by Andika Wasisto

PPL A2
3 min readJun 4, 2018

Pada post https://medium.com/@pplA2EDC/arsitektur-model-view-presenter-mvp-pada-aplikasi-android-cf4c4198b009, kita telah belajar cara menerapkan arsitektur MVP pada sebuah aplikasi Android. Kali ini, kita akan membahas penerapannya dalam aplikasi EDC.

Aplikasi EDC adalah sebuah aplikasi untuk membantu EDC / petugas Bank Mata Indonesia untuk mengambil jaringan kornea mata donatur. Aplikasi bekerja layaknya aplikasi driver ojek online dengan alur normal sebagai berikut:

  1. Donatur meninggal.
  2. Bank Mata Indonesia menugaskan seorang EDC untuk mengambil kornea donatur yang meninggal.
  3. Aplikasi milik EDC yang ditugaskan menampilkan notifikasi.
  4. EDC menerima tugas yang diberikan.
  5. Aplikasi mengarahkan EDC ke lokasi donatur.
  6. Setelah EDC mengambil kornea donatur, aplikasi mengarahkan EDC ke lokasi bank mata terdekat untuk mengirimkan kornea yang telah diambil.

Pada pembahasan ini, kita akan menggunakan user story “EDC menerima tugas yang diberikan” yang diambil dari alur di atas sebagai contoh.

Mengapa menggunakan design pattern arsitektur?

Tanpa arsitektur apapun, maka kode user story “EDC menerima tugas yang diberikan” seluruhnya akan dimasukkan dalam satu kelas activity Android dan akan terlihat seperti ini

User story “EDC menerima tugas yang diberikan” tanpa design pattern arsitektur

Kode di atas terlihat sangat tidak terstruktur. Hal tersebut menyebabkan sulitnya kode untuk dilakukan perubahan. Jika suatu saat ada permintaan perubahan user interface atau akses database secara langsung perlu diganti menggunakan REST API, perubahan yang perlu dilakukan sangat banyak. Selain itu, kode di atas sulit untuk dilakukan unit testing karena akses database dan manipulasi user interface secara langsung dilakukan dalam sebuah kelas.

Pada chapter pertama buku Patterns of Enterprise Application Architecture (P of EAA) karya Martin Fowler, dibahas sebuah konsep bernama layering untuk memecahkan masalah-masalah di atas. Layering adalah pembagian kode menjadi beberapa lapisan yaitu

  • Presentation layer (berhubungan dengan antarmuka pengguna)
  • Domain layer (berhubungan dengan business logic)
  • Data layer (berhubungan dengan akses database, resource, dan lain-lain)

Kita dapat menerapkan konsep tersebut dalam user story ini. Kita akan menggunakan arsitektur MVP (Model-View-Presenter) untuk membaginya dimana View bertanggung jawab sebagai presentation layer, Presenter bertanggung jawab sebagai domain layer, dan Model bertanggung jawab sebagai data layer.

Penerapan pada user story

User story “EDC menerima tugas yang diberikan” jika dipecah menjadi tiga lapisan menggunakan arsitektur MVP, alurnya akan terlihat seperti diagram di bawah

Alur user story “EDC menerima tugas yang diberikan”

Untuk lebih dalamnya, berikut adalah kode yang berada di View

lalu berikut adalah kode yang berada di Presenter

dan terakhir adalah kode yang berada di Model

Dengan penerapan arsitektur MVP, kode akan menjadi lebih terstrukur. Perubahan juga akan jauh lebih mudah dilakukan. Jika user interface perlu dilakukan perubahan, kita hanya perlu mengubah kelas View. Jika cara mengakses data perlu dilakukan perubahan, kita hanya perlu mengubah kelas Model.

Penerapan arsitektur MVP juga membuat testability kode meningkat. Karena segala business logic berada di Presenter, maka kita dapat melakukan unit testing kelas Presenter. Unit testing kelas Presenter mudah dilakukan karena akses database dan manipulasi user interface tidak secara langsung dilakukan pada kelas tersebut. Untuk unit testing dari user story ini akan dibahas pada post https://medium.com/@pplA2EDC/penerapan-design-pattern-arsitektur-mvp-pada-aplikasi-edc-part-ii-positive-negative-unit-566c76a7fd3d.

Happy coding!

--

--