Bagaimana memisahkan View dan Presenter di Android, sedangkan reaksi pada aksi pengguna (Presenter part dari MVP) diatur ke dalam aktivitas yang sama yang memperlihatkan elemen GUI (View part of MVP).
"Dalam presenter tampilan model seperti yang dikatakan Martin Fowler atau Michael Feathers [2], logika UI dipisahkan menjadi kelas yang disebut presenter, yang menangani semua input dari pengguna dan yang memberi tahu tampilan" bodoh "apa dan kapan harus display "(dikutip dari sini ).
Sampai sekarang saya berpikir bahwa salah satu fitur utama Android adalah Aktivitas cerdas yang mengambil tindakan, bereaksi terhadap mereka dan menunjukkan hasilnya. Apakah skema MVP bertentangan dengan filosofi Android? Apakah masuk akal untuk mencoba merealisasikannya di Android? Jika ya, bagaimana itu bisa dilakukan?
programmers
, pertanyaannya adalah pertanyaan yang lebih kontroversial "apa pendapat Anda tentang ../adalah baik atau buruk untuk ..." sementarastackoverflow
akan lebih seperti "Apakah ada contoh mvp di android". Bagi saya kedua tempat itu ok.Jawaban:
Aplikasi Android pada dasarnya dibangun di sekitar Model-View-Controller (MVC) - MVP terdengar seperti hal yang sama, meskipun saya belum pernah mendengar istilah sebelumnya. Aktivitas mengisi peran Kontroler, Tampilan XML hanya itu (meskipun Anda dapat membangunnya secara terprogram dalam Aktivitas - itu hanya lebih mudah dan sederhana untuk melakukannya dalam XML), dan Model yang Anda tulis sendiri. Jadi ya, model itu cukup praktis.
Kemungkinan alasan Anda mungkin belum banyak mendengar tentang model desain ini adalah bahwa kerangka kerja Android memaksa Anda untuk memisahkan tampilan. Karena aplikasi pada perangkat seluler cenderung kecil, orang tidak cenderung menggunakan MVC penuh; mereka cenderung melihat dan melihat lapisan tindakan di mana lapisan tindakan melakukan banyak pekerjaan (kecil) model.
Jika Anda menulis aplikasi lintas platform, Anda mungkin ingin melihat pendekatan empat lapis: Lihat, Aksi, Logika Bisnis, dan Model. Lapisan Tampilan dan Tindakan akan spesifik platform, sedangkan Logika dan Model Bisnis tidak akan berubah. Pada dasarnya, Anda membagi presenter dan interaksi pengguna ke lapisan Action, yang memanggil lapisan Business Logic untuk melakukan tindakan yang diinginkan pengguna.
sumber
Action
platform layer (= Presentation) independen, juga - setidaknya, ketika platform Anda yang berbeda menawarkan kemampuan UI yang serupa.Saya tidak memiliki pengalaman dalam pemrograman Android, tetapi memiliki pandangan singkat ke beberapa tutorial pemrograman Android pengantar, saya tidak melihat alasan mengapa MVP harus kurang berguna seperti dalam kerangka acara lainnya. The
Activity
kelas tidak jauh berbeda dariDialog
atauForm
dalam framework lain, sehingga harus mudah untuk menciptakan sebuah "activitity Presenter" kelas untuk setiap subclass Kegiatan aplikasi Anda dan menempatkan logika inti sana.Acara yang dikirimkan ke "Aktivitas" Anda harus didelegasikan ke presenter Anda, dan jika presenter Anda akan mengirim acara sendiri, atau memanggil fitur lain yang bergantung pada sistem, Aktivitas Anda harus menyediakan fungsi terkait melalui antarmuka yang dibagikan dengan presenter. Tapi itu pada dasarnya sama dengan kerangka GUI lain yang saya tahu.
sumber
MVP pasti bermanfaat untuk Android. Ini membantu untuk mengatur dan menguji unit kode Anda. Dan bagian terbaiknya adalah orang-orang baru yang membaca kode Anda akan dapat memahami kode tersebut dan akan mulai berkontribusi segera setelah mereka tahu apa yang harus pergi ke mana. Berikut adalah tautan yang sangat membantu untuk memahami MVP dengan contoh-contoh .
Berikut adalah penjelasan singkat tentang ketiga komponen MVP
Melihat
Di Android MVP, sebuah view berisi dua hal, Activity - android resource View - java interface Activity Menerapkan View dan menyuntikkan dirinya sendiri (View interface) dalam presenter sehingga presenter dapat berbicara dengan aktivitas menggunakan tampilan antarmuka. Tiga blok pertama diagram menunjukkan komunikasi antara View dan The Presenter.
Pembawa acara
Presenter bertindak sebagai lapisan tengah antara View dan Data / Model. View (Activity) memerintahkan presenter untuk menyajikan sesuatu dan presenter kemudian mengambil data dari database / Model dan memberikan kembali bentuk data yang dapat ditampilkan ke View. Lihat lalu berhati-hati menampilkan data itu di layar. Dan ingat bahwa Presenter adalah kelas java biasa, seharusnya tidak termasuk komponen android jika tidak akan membuat pengujian unit presenter sulit.
Jika Anda ingin menggunakan database di presenter maka buat aktivitas membuat instance database dan menyuntikkannya dalam presenter. Ini akan membantu Anda untuk mengejek basis data saat pengujian unit dan akan memungkinkan Anda untuk menguji logika bisnis.
Model
Model dalam MVP tidak lain adalah sumber data Anda. Lihat tidak berbicara dengan data secara langsung melainkan memerintahkan Presenter untuk menangani data untuk itu dan memberikan informasi kembali yang dapat ditampilkan tanpa modifikasi lebih lanjut.
sumber