Perbarui November 2018
Setelah bekerja dan membuat blog tentang MVC dan MVP di Android selama beberapa tahun (lihat bagian jawaban di bawah), saya memutuskan untuk menangkap pengetahuan dan pemahaman saya dalam bentuk yang lebih komprehensif dan mudah dicerna.
Jadi, saya merilis kursus video lengkap tentang arsitektur aplikasi Android. Jadi, jika Anda tertarik untuk menguasai pola arsitektur paling maju dalam pengembangan Android, lihat kursus komprehensif ini di sini .
Jawaban ini telah diperbarui agar tetap relevan pada November 2016
Sepertinya Anda mencari pola arsitektur daripada pola desain .
Pola desain bertujuan untuk menggambarkan "trik" umum yang mungkin diterapkan oleh programmer untuk menangani serangkaian tugas perangkat lunak berulang. Sebagai contoh: Dalam OOP, ketika ada kebutuhan untuk objek untuk memberi tahu satu set objek lain tentang beberapa peristiwa, pola desain pengamat dapat digunakan.
Karena aplikasi Android (dan sebagian besar AOSP) ditulis dalam Java, yang berorientasi objek, saya pikir Anda akan kesulitan mencari pola desain OOP tunggal yang TIDAK digunakan pada Android.
Pola arsitektur , di sisi lain, tidak menangani tugas perangkat lunak tertentu - mereka bertujuan untuk menyediakan template untuk organisasi perangkat lunak berdasarkan kasus penggunaan komponen perangkat lunak yang bersangkutan.
Kedengarannya agak rumit, tapi saya harap contoh akan menjelaskan: Jika beberapa aplikasi akan digunakan untuk mengambil data dari server jauh dan menyajikannya kepada pengguna secara terstruktur, maka MVC mungkin merupakan kandidat yang baik untuk dipertimbangkan. Perhatikan bahwa saya tidak mengatakan apa-apa tentang tugas perangkat lunak dan aliran program aplikasi - Saya baru saja menggambarkannya dari sudut pandang pengguna, dan seorang kandidat untuk pola arsitektur muncul.
Karena Anda menyebutkan MVC dalam pertanyaan Anda, saya rasa pola arsitektur adalah yang Anda cari.
Secara historis, tidak ada pedoman resmi oleh Google tentang arsitektur aplikasi, yang (di antara alasan lainnya) menyebabkan kekacauan total dalam kode sumber aplikasi Android. Bahkan, bahkan hari ini sebagian besar aplikasi yang saya lihat masih tidak mengikuti praktik terbaik OOP dan tidak menunjukkan organisasi kode yang jelas secara logis.
Tapi hari ini situasinya berbeda - Google baru-baru ini merilis perpustakaan Data Binding , yang sepenuhnya terintegrasi dengan Android Studio, dan, bahkan, meluncurkan seperangkat cetak biru arsitektur untuk aplikasi Android .
Dua tahun lalu sangat sulit untuk menemukan informasi tentang MVC atau MVP di Android. Saat ini, MVC, MVP, dan MVVM telah menjadi "kata-kata seru" di komunitas Android, dan kami dikelilingi oleh banyak ahli yang terus-menerus berusaha meyakinkan kami bahwa MVx lebih baik daripada MVy. Menurut pendapat saya, membahas apakah MVx lebih baik daripada MVy sama sekali tidak ada artinya karena istilah itu sendiri sangat ambigu - lihat saja jawaban untuk pertanyaan ini , dan Anda akan menyadari bahwa orang yang berbeda dapat mengaitkan singkatan ini dengan konstruksi yang sama sekali berbeda.
Karena fakta bahwa pencarian pola arsitektur terbaik untuk Android telah resmi dimulai, saya pikir kita akan melihat beberapa ide lagi terungkap. Pada titik ini, benar-benar mustahil untuk memprediksi pola (atau pola) mana yang akan menjadi standar industri di masa depan - kita perlu menunggu dan melihat (saya kira itu masalah satu atau dua tahun).
Namun, ada satu prediksi yang dapat saya buat dengan tingkat kepercayaan yang tinggi: Penggunaan perpustakaan Binding Data tidak akan menjadi standar industri. Saya yakin untuk mengatakan bahwa karena perpustakaan Data Binding (dalam implementasinya saat ini) memberikan keuntungan produktivitas jangka pendek dan semacam pedoman arsitektur, tetapi itu akan membuat kode tidak dapat dipertahankan dalam jangka panjang. Setelah efek jangka panjang dari perpustakaan ini akan muncul - itu akan ditinggalkan.
Sekarang, meskipun kami memiliki semacam pedoman dan alat resmi hari ini, saya, secara pribadi, tidak berpikir bahwa pedoman dan alat ini adalah pilihan terbaik yang tersedia (dan mereka jelas bukan satu-satunya). Dalam aplikasi saya, saya menggunakan implementasi arsitektur MVC saya sendiri. Ini sederhana, bersih, dapat dibaca dan diuji, dan tidak memerlukan perpustakaan tambahan.
MVC ini tidak hanya berbeda secara kosmetik dari yang lain - ini didasarkan pada teori bahwa Aktivitas di Android bukan Elemen UI , yang memiliki implikasi luar biasa pada organisasi kode.
Jadi, jika Anda mencari pola arsitektur yang baik untuk aplikasi Android yang mengikuti prinsip SOLID , Anda dapat menemukan deskripsi satu di posting saya tentang pola arsitektur MVC dan MVP di Android .