Perbedaan antara MVVM dan MVP

Tujuan pengembangan perangkat lunak adalah untuk membangun solusi yang memenuhi kebutuhan dan masalah bagi pengguna dan bisnis. Untuk mencapai ini, berbagai teknologi dan pola arsitektur suka Model-View-ViewModel (MVVM) dan Model-View-Presenter (MVP) digunakan.

Seperti halnya apa pun yang diproduksi, langkah pertama adalah tahap perencanaan dan desain. Proses perancangan perangkat lunak dapat berupa spesifikasi berdasarkan set alat teknologi yang disukai, dan dapat mencakup semua aktivitas mulai dari konsepsi hingga perencanaan, implementasi, pembaruan, dan modifikasi..

Ini mencakup desain arsitektur tingkat rendah dan tingkat tinggi, berdasarkan pola arsitektur yang dipilih, dan memetakan solusi yang dapat digunakan kembali menggunakan pola desain.

Struktur Aplikasi Perangkat Lunak

Arsitektur perangkat lunak mendefinisikan struktur aplikasi yang memenuhi persyaratan teknis, operasional, dan pengguna dan merujuk pada bagaimana kode diatur dan dikelola.

Memutuskan arsitektur aplikasi perangkat lunak sangat penting karena itu bukan bagian yang mudah dan dapat diubah dari aplikasi yang sudah dikembangkan; oleh karena itu pola arsitektur harus diputuskan sebelum pemrograman dimulai.

Pola arsitektur agak berbeda dengan pola desain karena cakupannya jauh lebih luas dengan mengatasi masalah yang lebih teknis seperti kinerja dan keterbatasan perangkat keras, dan ketersediaan tinggi. Contoh pola arsitektur yang berbeda adalah MVC, MVVM, dan MVP.

Di sisi lain, pola desain diformalkan praktik terbaik yang memfasilitasi pengembangan berorientasi objek yang dapat digunakan kembali dan lebih mudah untuk mempertahankan dan mengubah daripada arsitektur aplikasi. 

Pola Arsitektur

Model View Controller (MVC) adalah salah satu pola arsitektur pertama yang dikembangkan untuk aplikasi web, mendapatkan popularitas dari pertengahan hingga akhir tahun sembilan puluhan, terutama dengan komunitas Java.

Kerangka kerja yang lebih baru, seperti Django untuk Python dan Rails (Ruby on Rails), memiliki fokus yang kuat pada penyebaran cepat, itulah mengapa MVC mengambil pangsa pasar sebagai daya tarik besar dalam pola arsitektur.

Secara tradisional, pengembangan antarmuka pengguna mengandung banyak kode untuk menangani logika yang rumit sehingga pola arsitektur dirancang untuk mengurangi kode di tingkat antarmuka pengguna (UI), membuatnya lebih 'bersih' dan mudah dikelola.

Jadi, dengan pola MVC, aplikasi web terdiri dari

  • Model (data)
  • Melihat (antarmuka untuk melihat dan memanipulasi data)
  • Pengendali (operasi dan tindakan yang dilakukan pada data)

Itu Model menangani data dan logika bisnis dan ada tidak ketergantungan antara Model dan Pengendali atau Melihat.

Itu Melihat menyajikan data kepada pengguna dalam format yang didukung dan tata letak yang diperlukan, dan kapan Pengendali menerima permintaan pengguna (untuk mengambil data), ia memanggil sumber daya yang relevan yang dibutuhkan untuk menyelesaikan permintaan.

Mari kita terapkan pola ini untuk membangun toko buku online.

Pengguna dapat mencari, melihat, mendaftar, dan membeli buku, serta mengelola profil dan daftar buku mereka. Ketika seorang pengguna mengklik pada kategori SCI-FI, semua buku terkait harus ditampilkan sebagai tersedia.

Itu Pengontrol menangani tindakan yang mengelola buku (daftar, tambahkan, lihat, dll). Mungkin ada banyak Pengontrol dengan satu utama Pengendali 'mengarahkan lalu lintas'.

Untuk contoh ini, the Pengendali bernama controller_books.php dan Model (mis. model_books.php) menangani data dan logika yang terkait dengan buku.

Terakhir, berbeda Tampilan akan diperlukan, seperti saat menambahkan buku ke keranjang online atau saat melihat detail buku dengan gambar dan ulasan.

Itu controller_books.php menerima tindakan (permintaan pengguna) dari utama Pengendali (misalnya. index.php). Itu controller_books.php menganalisis permintaan dan memanggil model_books.php (data) untuk mengembalikan daftar buku SCI-FI.

Tanggung jawab Model adalah untuk memberikan informasi itu, menggunakan logika apa pun yang diterapkan (menggunakan filter pencarian). Itu Pengendali kemudian mengambil informasi dan meneruskannya ke yang relevan Melihat (tampilan pencarian, tampilan cetak, tampilan detail dll.) dan informasi disajikan (melalui Melihat) kepada pengguna yang mengajukan permintaan.

Ini adalah dasar-dasar pola MVC, yang telah mengembangkan variasi pemijahan pola arsitektur, seperti Model-View-Presenter (MVP), Model-View-ViewModel (MVVM), Hierarchical-Model-View-Controller (HMVC), dan Model-View-Adapter (MVA), dll.

Pola MVP

Model-View-Presenter (MVP)

Itu Pola MVP telah ada untuk sementara waktu dan merupakan varian dari MVC. Itu dirancang khusus untuk otomatisasi pengujian di mana tujuannya adalah untuk meningkatkan jumlah kode yang dapat diuji melalui otomatisasi, dan polanya mengatasi beberapa masalah dengan lapisan presentasi, mengisolasi logika bisnis dari UI.

Layar adalah View, data yang ditampilkan adalah Model, dan Presenter menghubungkan keduanya.

MVP terdiri dari komponen-komponen berikut dengan tanggung jawab terpisah:

  • Model (mendefinisikan data yang akan ditampilkan)
  • Melihat (menampilkan data dari Model dan merutekan permintaan pengguna ke Presenter).
  • Pembawa acara (berinteraksi antara Tampilan dan Model dan menyatukannya)

Itu Melihat (halaman web) menampilkan dan mengelola kontrol halaman dengan meneruskan peristiwa (permintaan pengguna) ke Pembawa acara yang diinisiasi dalam Melihat.

Itu Pembawa acara merespons peristiwa ini dengan membaca dan memperbarui Model untuk mengubah Melihat dan karenanya, Presenter tanggung jawab adalah untuk mengikat Model dan Melihat.

Setelah melihat MVC dan MVP pola, kesamaan keduanya memiliki tanggung jawab terpisah untuk setiap komponen dan mereka mempromosikan pemisahan antara Melihat (UI) dan Model (data). Perbedaan yang signifikan antara pola-pola ini lebih jelas dalam bagaimana pola-pola tersebut diimplementasikan.

MVP mungkin merupakan pola yang kompleks untuk diterapkan untuk solusi canggih tetapi tentu saja memiliki manfaat besar jika diimplementasikan sebagai solusi yang dirancang dengan baik, meskipun mungkin tidak selalu menjadi pilihan yang tepat untuk solusi sederhana.

Pola MVVM

Model-View-ViewModel (MVVM)

Itu MVVM pola secara khusus dirancang untuk Windows Presentation Foundation (WPF) dan platform Microsoft Silverlight, dan dapat digunakan pada semua XAML [i] platform.

WPF adalah sistem Microsoft yang membuat antarmuka pengguna dalam program berbasis Windows dan pertama kali dirilis dalam .NET Framework 3.0.

MVVM dimurnikan dari MVC dan dalam pola ini, the Melihat aktif dengan perilaku, peristiwa, dan pengikatan data, dan Melihat disinkronkan dengan ViewModel (yang memungkinkan pemisahan presentasi dan memperlihatkan metode dan perintah untuk mengelola dan memanipulasi Model.

MVVM terdiri dari tiga komponen inti:

  • Model (mewakili data dengan validasi dan logika bisnis)
  • Melihat (Tampilan bertanggung jawab untuk menentukan struktur, tata letak, dan tampilan dari apa yang dilihat pengguna di layar. Idealnya, tampilan didefinisikan murni dengan XAML, dengan kode-belakang yang terbatas yang tidak mengandung logika bisnis. Dua cara data- mengikat antara Melihat dan ViewModel untuk menampilkanmungkin menyinkronkan Model dan Model View dengan View)
  • ViewModel (memisahkan tampilan dari Model, dan memperlihatkan metode dan perintah untuk memanipulasi data (Model).

Itu Melihat menerima data dari ViewModel (melalui pengikatan data dan metode), dan pada saat runtime, the Melihat akan berubah saat merespons acara di ViewModel.

Itu ViewModel menengahi antara Melihat dan Model dan menangani Melihat logika. Berinteraksi dengan Model - mengambil data dari Model dan menyajikannya ke Melihat menampilkan.

Semua komponen ini dipisahkan satu sama lain sehingga memungkinkan fleksibilitas yang lebih besar untuk mengerjakannya secara terpisah, mengisolasi pengujian unit, dan menukarnya, tanpa mempengaruhi komponen lainnya..

Struktur ini memungkinkan Model dan komponen lain untuk berkembang secara independen, yang memungkinkan pengembang untuk bekerja pada berbagai aspek solusi secara bersamaan. Misalnya, tempat desainer mengerjakan Melihat, mereka hanya menghasilkan sampel data tanpa perlu akses ke komponen lain. Ini memfasilitasi desain ulang yang mudah dari antarmuka pengguna sebagai Melihat diimplementasikan dalam XAML.

Seperti yang disebutkan sebelumnya dengan MVP, solusi sederhana tidak akan membutuhkan pola arsitektur dan desain, seperti "Hello World!" terlalu mendasar untuk mengikuti pola apa pun; Namun, dengan lebih banyak fitur, fungsi, dan komponen yang diperkenalkan, kompleksitas aplikasi meningkat dan begitu juga jumlah kode yang perlu dikelola.

Singkatnya

Sejak awal pengembangan antarmuka pengguna, pola desain menjadi semakin populer untuk membuat proses pengembangan lebih mudah, aplikasi lebih terukur dan memfasilitasi pengujian lebih mudah.

Ilustrasi perbedaan antara Pola MVP dan MVVM:

  • Di keduanya MVP dan MVVM, itu Melihat adalah titik masuk ke aplikasi
  • Di MVP, ada pemetaan satu-ke-satu antara Melihat dan Pembawa acara, di mana MVVM, hubungan adalah satu-ke-banyak di antara Melihat dan ViewModel.
  • MVP digunakan terutama untuk Formulir Windows dan aplikasi Windows Phone dan MVVM dirancang untuk Silverlight, WPF, Knockout / AngularJS, dll.