Saya telah membaca tentang Pengendali Model View, Model View Presenter, Model View ViewModel, dan sebagainya, dan secara umum, konsep yang mendasarinya tampak cukup sederhana untuk dipahami: jaga agar visual dan ilmu yang cantik tetap terpisah dan bodoh satu sama lain. bisa jadi. Tidak mendapatkan logika selai kacang dalam cokelat desain; keren, aku suka itu.
Masalahnya adalah saya masih agak kabur untuk bagian ketiga ... yang tidak-model-atau-tampilan. Semua orang tampaknya memiliki ide mereka sendiri tentang apa yang disebutnya, apa yang harus dilakukan, apa yang pantas, apa yang salah ... dan saya akan mencoba mencari tahu kapan Presenter menjadi ViewModel dan ketika View tidak boleh t akan melakukan itu karena itulah pekerjaan Presenter dan--
Saya mengoceh.
Daripada meminta seseorang untuk menjelaskan perbedaan di antara mereka - karena itu sudah dilakukan berkali-kali (saya tahu; saya sudah membaca lebih banyak artikel daripada yang bisa saya hitung) - Saya ingin tahu mendengar pemikiran seorang beberapa programmer pada model saya telah dirakit sendiri.
Yang mengatakan, apa yang akan Anda mengklasifikasikan desain ini, dan mungkin yang lebih penting, apakah Anda melihat sesuatu tentang ini yang jelas-jelas menyebalkan? Tentu, saya ingin mendengar saya melakukan yang baik jika ini benar-benar desain yang solid, tetapi saya lebih suka diberi nasihat yang solid daripada pujian.
Catatan: Saya akan menggunakan "Jembatan" untuk bagian ketiga misterius Model-View-? untuk menghindari saran bawah sadar tentang apa yang "seharusnya".
Model
- Apakah otoritas pada data.
- Menerima informasi tentang perubahan yang diminta dari Jembatan.
- Berisi dan melakukan semua logika untuk bagaimana data terkait dengan data lainnya.
Menginformasikan Jembatan ketika data berubah (untuk data Jembatan telah menyatakan minatnya).Edit tulisan: Mengizinkan pelanggan luar (yang tidak tahu apa-apa) untuk memantau keadaan atau hasil perhitungannya.- Tidak memiliki pengetahuan tentang Tampilan.
Melihat
- Berkepentingan dengan menyediakan cara bagi pengguna untuk melihat dan memanipulasi data.
- Menerima informasi tentang pembaruan data dari Bridge.
- Berisi dan melakukan semua logika untuk bagaimana menyajikan data dan kontrol kepada pengguna.
- Menginformasikan Jembatan ketika pengguna telah melakukan tindakan yang (mungkin) mempengaruhi Model.
- Menginformasikan kepada Bridge informasi apa yang menarik baginya.
- Memiliki nol pengetahuan tentang Model.
Jembatan
- Apakah koordinator dan penerjemah antara Model dan Tampilan.
- Membuat perubahan pemformatan yang sesuai untuk informasi yang disampaikan antara Model dan Tampilan.
- Menyimpan informasi tentang "siapa yang perlu tahu apa".
- Memiliki pengetahuan tentang Model dan Tampilan.
catatan tambahan
- Dalam program yang lebih rumit, biasanya ada beberapa Model. Dalam situasi ini, Bridge biasanya bertugas mengoordinasi / menerjemahkan antara beberapa Model, dan dengan demikian menjadi otoritas pada apa model Protocall / API / design seharusnya dibangun. (mis. jika membuat program permainan kartu, dan Anda ingin membangun model pengocok geladak alternatif, Anda harus menggunakan Bridge untuk menentukan fungsi apa yang diperlukan untuk komunikasi yang benar dengan Bridge.)
- Dalam program kecil sederhana dengan hanya satu Tampilan dan Model, sudah umum bagi Bridge untuk "mengasumsikan" fungsionalitas apa yang tersedia di kedua sisi. Namun, ketika program menjadi lebih kompleks, direkomendasikan bahwa View (s) dan Model (s) melaporkan fungsionalitasnya ke Bridge sehingga dapat menghindari inefisiensi dan asumsi buggy.
Saya pikir hampir menutupinya. Dengan segala cara, saya menyambut setiap pertanyaan yang mungkin Anda miliki tentang desain yang cenderung saya gunakan, dan saya juga mendorong setiap saran.
Dan seperti biasa, terima kasih atas waktu Anda.