iOS Development

MVVM (Model-View-View Model)

Saat pairing minggu lalu, teman saya tiba-tiba bertanya kepada saya:

Kamu tahu gak kenapa menggunakan MVVM? Tujuan penggunaannya?

Saya sebenarnya pernah dijelaskan oleh senior saya mengenai MVVM, dan bahkan disarankan untuk membacanya pada awal saya masuk sebagai iOS Developer.  Sepertinya saya membacanya, namun saya masih bingung dan takut salah untuk menjawab pertanyaan teman saya tersebut, yang berarti saya belum paham benar mengenai MVVM. Saya hanya mengikuti pola yang telah ada. Oleh karena itu, saya coba membacanya kembali, dan saya coba tuliskan kembali sepemahaman saya. Kalau ada yang keliru, tolong kasih tahu yang benar di kolom komentar ya.

Jadi, apa itu MVVM?

MVVM adalah salah satu software architectural pattern (structural design pattern). Dari apa yang saya baca di artikelnya Ray Wenderlich, kita bisa memisahkan struktur objek di aplikasi kita menjadi Model, View, dan View Model.

Model : memegang data aplikasi, biasanya dalam class atau struct

View: menampilkan controller dan elemen visual , biasanya turunan dari UIView (di iOS)

View Model: mentransformasi informasi dari model menjadi nilai yang bisa ditampilkan di view. Kita membutuhkan view model saat butuh untuk mentranformasi model menjadi representasi lain untuk View.

Artinya, jika kita buat suatu aplikasi misalnya aplikasi berita , maka view akan berisi table view yang , makan akan ada view model yang menampilkan news item dan view model yang berisi data yang merepresentasikan news item seperti judul, deskripsi, dan tanggal terbit.

Menurut Azam Sharp, di iOS umumnya menggunakan MVC, tapi jadinya banyak kode numpuk di view controller. MVVM membuat mudah untuk mengetes logika untuk menampilkan view kita dengan membuat unit tes untuk komponen di aplikasi.

Referensi lain yang bisa dibaca: www.tutorialspoint.com/mvvm/mvvm_introduction.htm

Akan aku tambahkan apabila ada insight lain. Terimakasih ~

Categories: iOS Development

Tagged as: ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s