ARSITEKTUR MVC
MVC adalah singkatan dari Model, View, Controller, yang merupakan
sebuah arsitektur untuk membuat sebuah program. Arsitektur ini
menekankan kepada pembagian dari komponen-komponen program
menjadi tiga bagian utama yaitu Model, View, dan Controller. Diagram
dalam Gambar 1 memberikan gambaran konseptual tentang arsitektur
MVC.
GAMBAR 1 – DIAGRAM ARSITEKTUR MVC
Interaksi user dengan program digambarkan dengan arah panah besar
yang menuju View. Kemudian View memanggil Controller. Selanjutnya
Controller akan membuat atau memanipulasi Model. Model ini akan
diberikan kepada View untuk ditampilkan kepada user.
Dengan demikian tugas View adalah menangani tampilan program dan
interaksi antara user dengan program. Controller melakukan koordinasi
antara View dan Model. Sedangkan Model adalah bagian yang bekerja di
belakang layar untuk memenuhi permintaan user dalam sebuah interaksi.
Tujuan dari pembagian program ke dalam tiga bagian besar ini adalah
untuk memisahkan fokus perhatian, tanggung jawab, dan logic ke dalam
bagian masing-masing. View hanya fokus kepada tampilan dan
menangani interaksi dengan user. Model hanya fokus kepada manipulasi
objek-objek non-visual dan logic di dalamnya untuk memenuhi skenario
2
sebuah proses bisnis. Sedangkan Controller menerima input dari View,
membuat dan memanipulasi Model, lalu memberikan Model kepada View
untuk ditampilkan ke user.
Cara mudah untuk memahami arsitektur MVC ini adalah dengan
menggunakan analogi organisasi bisnis dan peran yang terdapat di
dalamnya. Sebuah organisasi bisnis biasanya memiliki staf marketing,
mandor, dan staf operasional. Staf marketing melakukan segala upaya
untuk memikat calon pelanggan. Tugasnya adalah ‘menjual’ produk
kepada calon pelanggan. View dalam MVC ibarat staf marketing ini.
Tugasnya adalah ‘menjual’ dengan memberikan presentasi yang menarik
kepada user.
Peran lain yang terdapat dalam sebuah organisasi bisnis adalah staf
produksi yang bekerja di belakang layar memenuhi target yang telah
ditetapkan untuk bisa memenuhi permintaan pelanggan. Pekerjaan staf
produksi tidak tampak oleh pelanggan itu sendiri. Staf produksi juga
tidak bertanggung jawab untuk langsung bertemu dengan pelanggan.
Model dalam MVC ibarat staf produksi ini. Tugasnya adalah ‘bekerja’
dengan memberikan segala daya dan upayanya untuk memberikan hasil.
Peran terakhir dalam sebuah organisasi bisnis adalah supervisor yang
mengurusi manajemen antara staf marketing dan staf produksi.
Berdasarkan masukan dari staf marketing, supervisor menetapkan target
produksi yang kemudian akan dikerjakan oleh staf operasi. Supervisor
kemudian mempertemukan antara staf produksi dan staf marketing
untuk melakukan koordinasi sebelum produk-nya dipresentasikan
kepada pelanggan. Setelah oke, supervisor kemudian memerintahkan staf
marketing untuk melakukan presentasi produk kepada calon pelanggan.
Controller dalam MVC ibarat supervisor. Tugasnya adalah melakukan
manajemen dan koordinasi kerja antara View dan Model.
Hubungan ketiga komponen Model, View, dan Controller menciptakan
dependensi antar komponen. View bergantung kepada Model, tetapi
Model tidak bergantung kepada View. Designer View perlu mengetahui
bagaimana struktur data dari Model untuk bisa menampilkan Model
tersebut dengan benar dalam View, sebaliknya developer yang
3
mengembangkan Model tidak perlu tahu sama sekali bagaimana bentuk
tampilan dari Model tersebut.
Controller dan View saling bergantung satu sama lain. View memerlukan
Controller untuk ‘meneruskan’ input dari user ke Model, sedangkan
Controller memerlukan View untuk meng-update tampilan setelah Model
selesai dengan tugasnya. Controller bergantung kepada Model karena
perlu memanggil Model dan memberikannya kepada View. Sebaliknya
Model tidak bergantung kepada Controller.
Dengan demikian, arsitektur MVC memberikan pemisahan tugas dan
tanggung jawab yang jelas antara Model, View, dan Controller. Sehingga
developer sesuai dengan keahliannya bisa memusatkan perhatian kepada
logic proses bisnis di dalam Model. Designer yang mumpuni dalam grafik
dan tampilan bisa fokus mengembangkan tampilan yang akan memikat
user. Kedua komponen tersebut bisa bekerja dengan harmonis yang
diatur oleh Controller. Pemisahan yang jelas ini juga akan memudahkan
pengetesan terhadap masing-masing komponen.