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.
Kelebihan
Kekurangan
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.
Kelebihan
Kekurangan
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.
Kelebihan
Kerugian
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