aditnanda

blog Detail

MVC vs MVP vs MVVM : Apa Perbedaan Diantara Ketiganya dan Mana yang Terbaik Diantara Mereka??

Pada saat ini para pengembang memiliki banyak opsi terkait pola desain arsitektur. Para pengembang biasanya menggunakan Model-View-ViewModel (MVVM), Model-View-Presenter (MVP), dan Model-View-Controller (MVC) untuk merancang maupun mengembangkan aplikasi mereka. Tujuan dari pengembang menggunakan arsitektur tersebut adalah untuk memmisahkan tanggung jawab antara visualisasi, pemrosesan, dan manajemen data untuk aplikasi UI.

Para pengembang berharap dengan menerapkan arstitektur tersebut dapat meningkatkan modularitas, fleksibilitas, kemudahan pengujian, dan pemeliharaan pada aplikasi yang dirancang maupun yang dikembangkan.

 

MVC

MVC atau yang biasa disebut Model View Controller adalah suatu model yang seringkali digunakan oleh para pengembang software. Komponen-komponen di dalam arsiteuktur ini yaitu sebagai berikut.

Model

Di dalam komponen ini berisi tentang logika bisnis dan status data yang ada di dalam aplikasi. Kompnen ini bertugas untuk mendapatkan dan memanipulasi data, berkomunikasi dengan controller, berinteraksi dengan database, terkadang memperbarui tampilan dari aplikasi yang dikembangkan.

View

Komponen ini berhubungan dengan antarmuka pengguna yang terdiri dari HTML/CSS.XML. Komponen ini berkomunikasi dengan pengontrol dan terkadang berinteraksi dengan model. View berkerja sama dengan controller untuk menciptakan tampilan dinamis pada aplikasi yang dikembangkan. Selain bertugas untuk menangani antarmuka dan interaksi pengguna, komponen view juga memiliki tugas untuk menyajikan data yang sesuai untuk pengguna.

Controller

Controller adalah suatu aktivitas/fragmen yang berfungsi sebagai komunikator antara view dan model. Komponen ini membutuhkan suatu input pengguna dari layanan view/REST. Lalu Permintaan “Get Data” diproses dari model dan diteruskan ke view untuk ditampilkan ke pengguna.

 

Arsitektur MVC

 

Kelebihan

  • MVC membuat logika bisnis terpisah dalam Model.
  • Mendukung teknik asynchronous.
  • Jika terjadi suatu modifikasi, maka tidak akan mempengaruhi keseluruhan Midel.
  • Proses pengembangan aplikasi yang dilakukan dapat lebih cepat.

Kekurangan

  • Arsitektur ini dapat meningkatkan kompleksitas.
  • Pengujian unit terhalang.
  • Controller kode yang besar yang membuat pengembang tidak bisa mengelolahnya.

 

MVP

MVP atau biasa disebut Model View Presenter adalah turunan dari pola desain arsitektur MVC dan berfokus pada peningkatan logika presentasi. Awal mula MVC terbentuk yaitu pada awal tahun 1990 dimana perusahaan bernama Taligent mengerjakan model untuk lingkungan C++ CommonPoint.

Pada saat waktu pengembangan, para pengembang harus dapat membagi arsitektur menjadi beberapa lapisan untuk mematahkan ketergantungan antar komponen yang dilihat pada komponen view.

Model

Model mewakili sekumpulan kelas yang mendeskripsikan logika bisnis dan data. Hal tersebut juga mendeskripsikan aturan bisnis untuk data seperti mengambil dan memanipulasi data, serta berinteraksi dengan database. Model digunakan untuk berkomunikasi dengan presenter, akan tetapi model tidak berinteraksi dengan view.

View

View digunakan untuk membuat interaksi dengan pengguna seperti XML (UI), aktivias, dan fragmen serta berinteraksi dengan Presenter. Hal-hal tersebut tidak berhubungan dengan logika yang akan diimplementasikan dalam proses tersebut.

Presenter

Presenter menyajikan data dari model dan mengontrol semua perilaku yang ingin ditampilkan dari aplikasi yang mendorong dan memberitahu View apa yang harus dilakukan. Interaksi yang dilakukan antara model dan view ditangani oleh presenter. Tidak hanya itu presenter juga bertugas untuk menyimpan data kembali ke Model.

 

Arsitektur MVP

 

Kelebihan

  • Dapat memberikan kemudahan terhadap penukaran tampilan.
  • View dan Presenter dapat digunakan kembali untuk pengembangan aplikasi.
  • Kode yang lebih mudah untuk dibaca dan dipelihara.
  • Kemudahan pengujian dikarenakan logika bisnis yang terpisah dari UI.

Kekurangan

  • Ukuran kode yang terlalu besar.
  • Banyaknya interface untuk berinteraksi antar lapisan yang terpisah.
  • Memiliki hubungan yang erat antara View dan Presenter

 

MVVM

MVVM atau Model View ViewModel yang merupakan gabungan dari MVC dan MVP. MVVM awalnya digunakan di dalam Windows Presentation Foundation (WPF) dan Silverlight, yang secara resmi diumumkan pada tahun 2005 oleh John Grossman dalam sebuah posting blog tentang Avalon. Pola yang digunakan berdasarkan gabungan dari MVC dan MVP mencoba untuk lebih jelas dalam memisahkan pengembangan UI dari logika bisnis dan perilaku dalam aplikasi.

Model

Model yang digunakan untuk MVVM mirip dengan model yang digunakan MVC, dimana model tersebut terdiri dari data dasar yang digunakan untuk menjalankan perangkat lunak.

View

View digunakan sebagai antarmuka grafis antara pengguna dan pola desain, serta menampilkan output dari data yang telah diproses. View yang digunakan MVVM mirip dengan View yang digunakan dalam MVC.

ViewModel

ViewModel di satu sisi adalah abstraksi dari View, lalu di sisi yang lain, sebagai penyedia pembungkus data model untuk ditautkan. ViewModel terdiri dair Model yang diubah menjadi View, dan berisi perintah yang dapat digunakan oleh View untuk mempengaruhi Model.

 

Arsitektur MVVM

 

Kelebihan

  • Tidak memiliki hubungan (ketergantungan) antara View dan ViewModel.
  • Tidak ada antarmuka antara View dan Model.
  • Pengujian unit yang mudah dan kode yang digerakkan oleh peristiwa (event-driven).

Kerugian

  • Pengembang harus membuat suatu kuantitas yang dapat diukur di setiap komponen UI.
  • Ukuran kode yang terlalu besar.

 

Komparasi antara MVC, MVP, MVVM

Evaluasi Performa

MVP memiliki tingkat keandalan tertinggi dibandingkan MVP dan MVVM, akan tetapi di dalam pengujian performa UI memiliki rendering frame terendah. Peningkatan data yang terdapat pada arsitektur MVVM menciptakan suatu beben tambahan yang dapat mempengaruhi kinerja saat melakukan tugas-tugas yang kompleks.

Kesesuaian

Untuk arsitektur yang memiliki tingkat kesesuaian terbaik jatuh pada arsitektur MVVM karena keterikatan data yang dapat membuat dampak positif. Lalu posisi kedua jatuh pada arsitektur MVP, dan posisi yang terakhir adalah arsitektur MVC dikarenakan arsitektur memiliki masalah pengulangan yang serius.

Kemudahan modifikasi (perubahan)

Ketika berbicara tentang modifikasi terhadap pola desain arsitektur, hal tersebut menunjukkan bahwa suatu arsitektur harus dapat dimodifikasi agar dapat memberi pilihan untuk menambhakan suatu fitur atau strategi yang baru ke dalam aplikasi yang dikembangkan. Pada arsitektur MVP dan MVVM hanya memiliki kemampuan perubahan yang sedikit, akan tetapi MVVM memiliki kontribusi yang banyak terhadap pemeliharaan. Arsitektur MVC cenderung meningkatkan jumlah perubahan pada sebagian besar kasus pengembangan aplikasi.

Refrensi

Pada arsitektur MVC, View tidak memiliki refrensi ke Controller, lalu arsitektur MVP pada View memiliki refrensi ke Presenter, dan yang terakhir arsitektur MVVM pada View memiliki refrensi ke ModelView.

Titik Point

Untuk arsitektur MVC, titik masuk ke aplikasi berada di Controller, sedangkan MVP dan MVVM, ttik masuknya berada pada View.

 

Para pengembang bebas dalam memilih desain arsitektur aplikasi yang sesuai untuk diterapkan ke dalam aplikasi mereka, bahkan para pengembang mungkin tidak hanya menerapkan satu desain arsitektur aplikasi saja tapi menggabungkan 2 atau lebih arsitektur aplikasi yang diterapkan. Para pengembang mungkin juga menerapkan arsitektur aplikasi di proyek yang berbeda untuk mengukur tingkat performa, kualitas, dan lain-lain.

Refrensi:

https://blog.mindorks.com/mvc-mvp-mvvm-architecture-in-android

https://levelup.gitconnected.com/mvc-vs-mvp-vs-mvvm-35e0d4b933b4

 

Ingin tahu informasi dan berita menarik lainnya, silahkan kunjungi website kami di :

https://agus-hermanto.com/

 

Dan jangan lupa follow media sosial kami yang lain

Instagram  : fittechinova

Facebook   : Fit Tech Inova Global

linkedin      : https://www.linkedin.com/company/fti-global