Kesatuan dengan repositori

Saya baru mengenal Unity IoC (DI secara umum) dan telah membaca banyak dokumen dan menonton video berdurasi beberapa jam di Channel 9. Bahkan setelah semua itu, saya tidak menemukan contoh apa pun yang mendemonstrasikan set fitur di mencari.

Segala sesuatu yang online menunjukkan bahwa Anda dapat membuat repositori, dan mendaftarkannya dengan wadah kesatuan. Kemudian saya bisa memasukkan repositori ke dalam konstruktor model tampilan saya. Di aplikasi khusus saya, saya perlu mendukung ParseCloud, Box, DropBox dan OneDrive, bersama dengan beberapa implementasi antarmuka. Jadi saya berencana membuat empat repositori, satu untuk setiap layanan.

Apakah lebih masuk akal jika Unity mendaftarkan satu pabrik repositori abstrak, yang dapat digunakan oleh model tampilan untuk mengambil repositori yang benar berdasarkan konfigurasi aplikasi?

Hal lain yang didukung oleh aplikasi (aplikasi tugas) adalah beberapa implementasi ITask, jadi saya memiliki BasicTask, GTDTask, GoogleTask. Jadi saya berpikir saya memerlukan metode repositori yang dapat menangani setiap implementasi, dan menyimpan implementasi di layanan cloud yang benar. Bagaimana cara mencapai abstraksi ini dengan Unity? Apakah yang terbaik adalah mendaftarkan semua tipe ITask dan meminta repositori abstrak menentukan tipe mana yang termasuk dalam repositori mana berdasarkan layanan tempat pengguna masuk?

Saya ingin menjaga model tampilan Halaman tetap independen dari implementasi tugas. Saya akan menggunakan DataTemplates yang tipe targetnya akan ditetapkan ke tipe tugas tertentu. Jadi UI dapat tetap digabungkan secara longgar dan model tampilan saya tidak digabungkan secara erat dengan semua repositori atau implementasi saya.

Terima kasih atas bantuannya.

Johnathon


person Johnathon Sullinger    schedule 22.06.2014    source sumber


Jawaban (1)


Daftarkan implementasinya bukan pabrik. Model tampilan tidak boleh menyentuh repositori. Pengontrol menggunakan repositori untuk mendapatkan atau memperbarui model dan menyediakannya ke model tampilan

person Adrian Booth    schedule 22.06.2014
comment
Berdasarkan pengontrol, saya berasumsi Anda mereferensikan mvc? Saya menggunakan mvvm dan WPF. Apakah itu ada bedanya? - person Johnathon Sullinger; 22.06.2014
comment
Tidak ada mvvm yang mendapat banyak manfaat dari pengontrol. Implementasi mvvm terbaik yang saya temukan adalah model =› objek bisnis, pengontrol mengisi model tampilan dengan perintah dan nilai awal, dll. Model tampilan hanyalah hal-hal yang dibutuhkan ui sebagai kumpulan data dan perintah untuk tombol. Pengontrol tidak diperlukan tetapi membantu penggunaan kembali kode. Saya berasumsi akan ada beberapa tampilan di mana Anda melihat objek yang sama. Memiliki pengontrol yang memberikan perintah yang sama untuk masing-masing pengontrol akan mengurangi upaya pengujian dan pengkodean. - person Adrian Booth; 22.06.2014
comment
Kelas pengontrol Anda akan membuat perintah delegasi dengan meneruskan objek kerja seperti item pembaruan pada pengontrol dan metode yang menentukan kapan perintah tersebut aktif. - person Adrian Booth; 22.06.2014
comment
Masih tidak yakin saya mengikuti maaf. Tampilan terikat data ke model tampilan, apakah VM memiliki referensi ke objek pengontrol? - person Johnathon Sullinger; 22.06.2014
comment
Tidak, saya akan mereferensikan VM dari pengontrol. Buat instance VM yang diinginkan dari pengontrol yang meneruskan item yang diperlukan di konstruktor - person Adrian Booth; 22.06.2014
comment
Tapi itu berfungsi melawan Prism, yang menangani pengkabelan VM dengan Tampilan yang cocok bukan? - person Johnathon Sullinger; 22.06.2014