Architecture Pattern
Arsitektur adalah seni dan ilmu dalam merancang bangunan. Semua orang bisa merancang bangunan, mempunyai pintu, jendela, atap dan komponen lainnya. Namun tak semua orang bisa merancang bangunan dengan baik.
Itulah kenapa, arsitektur sangat penting dalam merancang bangunan. Memposisikan pintu, jendela dan komponen lain pada tempatnya, bukan semata-mata untuk tampilan. Melainkan juga untuk kenyamanan orang orang yang menempati bangunan tersebut.
Demikian halnya Android development. Saat mendesain sebuah aplikasi, Anda harus mampu menerapkan arsitektur dengan baik. Bisa saja Anda tak menerapkan arsitektur pada aplikasi buatan Anda.
Toh aplikasi masih bisa jalan, bukan? Tunggu dulu. Jika Anda alpa menerapkan arsitektur di bagian-bagian tertentu, proses pengembangan aplikasi akan terhambat. Ini contohnya:
- Anda akan sulit memelihara (maintain) kode Anda. Semata-mata karena kode Anda berantakan alias tidak teratur.
- Karena sulit memelihara kode tersebut, Anda akan mudah menjumpai eror baru saat menambahkan sebuah fitur.
- Jika sudah seperti itu, kode Anda tentu tidak reusable atau tidak bisa digunakan kembali.
- Tidak testable atau tidak bisa diuji coba dengan mudah.
- Apa akibatnya jika tidak ada arsitektur standar dalam tim? Tentu perlu banyak waktu dan tenaga untuk mempelajari kode buatan anggota tim lainnya.
Maka dari itu, Anda perlu mempelajari pattern / pola arsitektur. Tujuannya agar aplikasi Anda dapat mudah Anda kelola dan uji, serta dapat dipahami orang lain.
Untuk mencapai architecture pattern yang baik, lakukan isolasi antara kode logika dan kode tampilan. Maksudnya adalah Anda perlu melakukan pemisahan kode antara business logic dengan UI.
Contohnya Anda membuat fitur register maka Anda perlu memisahkan kode untuk pengecekan input, proses pengiriman ke database atau proses business logic lainnya, dengan kode-kode yang berfungsi untuk merubah tampilan.
Perlu Anda ketahui, sebenarnya ada banyak pattern yang digunakan dalam pengembangan aplikasi, contohnya adalah MVC, MVP, MVVM dan masih banyak lagi.
Model-View-ViewModel
Komponen dari MVVM terdiri dari sebuah model, view, dan viewmodel.
Model: adalah kelas yang digunakan untuk membuat data. Salah satu dari strategi implementasi model adalah membuat model terbuka via observables agar terpisah antara ViewModel atau observer / consumer.
View: Tugas dari View pada MVVM adalah untuk mengamati sebuah ViewModel observable guna mendapatkan data yang akan mengupdate UI/ tampilan.
ViewModel: ViewModel berinteraksi dengan model dan juga menyiapkan observables yang akan diobservasi oleh View. ViewModel dapat menyediakan hooks untuk View dan pass events kepada model.
Salah satu implementasi strategi dari ViewModel adalah memisahkannya dengan View. Contohnya, ViewModel tidak seharusnya tahu dengan siapa View berinteraksi.
Keuntungan menggunakan Architecture Pattern MVVM
- Maintainability
Memisahkan berbagai jenis kode dengan bersih, dan membuatnya mudah untuk masuk ke bagian-bagian tertentu tanpa khawatir jika ada perubahan. Anda pun bisa tetap gesit mengembangan aplikasi dan terus bergerak demi cepatnya rilis. - Testability
Bagaimana jika Anda menerapkan MVVM dengan benar pada tiap dependensi internal dan eksternal dengan benar di setiap bagian kode? Itu akan memudahkan Anda melakukan pengujian. Pastikan bahwa saat menulis, pengujian berfungsi dengan benar dan tetap bekerja meski ada perubahan dalam pemeliharaan. - Extensibility
Terkadang ketika Anda ngoding, Anda sering menulis kode yang berulang ulang. Dengan MVVM, Anda memiliki peluang lebih baik untuk membuat bagian-bagian itu reusable. Dengan MVVM, Anda juga memiliki kemampuan untuk mengganti atau menambah potongan kode baru yang sifatnya similar atau sama di dalam arsitektur.
Tujuan yang jelas dari pattern MVVM adalah abstraksi dari View yang mengurangi jumlah business logic dalam kode-belakang. Namun, berikut adalah beberapa keunggulan solid lainnya:
- ViewModel lebih mudah untuk unit test.
- Anda dapat mengujinya tanpa otomatisasi dan interaksi UI yang belum sempurna.
- Presenter dan logikanya memiliki hubungan yang tidak erat. Masih ada hubungan, tetapi ketika presenter atau logika diubah, tak ada efek banyak pada pasangannya.
Pada kelas ini, Anda akan fokus mempelajari architecture pattern MVVM.
Dengan adanya architecture pattern, Android developer termudahkan dalam mengembangkan Aplikasi.
Namun dalam mengembangkan aplikasi, developer bebas menentukan architecture pattern apa yang dia pakai. Sebabnya, pemilihan architecture pattern tergantung pada kebutuhan dan opini dari masing-masing developer.
Saat Google IO tahun 2017, Google mengumumkan konsep architecture pattern yang kuat dan mudah untuk mengembangkan aplikasi Android. Yap, Android Architecture Components yang dibungkus dalam “Android Jetpack”. Ini dapat menjadi panutan untuk para developer menentukan architecture pattern yang dipakai.