Latar Belakang
Saya memiliki proyek yang tergantung pada penggunaan jenis perangkat perangkat keras tertentu, sementara itu tidak terlalu penting siapa yang membuat perangkat perangkat keras selama itu melakukan apa yang saya butuhkan. Dengan itu dikatakan, bahkan dua perangkat yang seharusnya melakukan hal yang sama akan memiliki perbedaan ketika mereka tidak dibuat oleh produsen yang sama. Jadi saya berpikir untuk menggunakan antarmuka untuk memisahkan aplikasi dari merek / model perangkat tertentu yang terlibat, dan sebagai gantinya memiliki antarmuka hanya mencakup fungsionalitas tingkat tertinggi. Inilah yang saya pikirkan arsitektur saya akan terlihat seperti:
- Tentukan antarmuka dalam satu proyek C #
IDevice
. - Memiliki beton di perpustakaan yang ditentukan dalam proyek C # lain, yang akan digunakan untuk mewakili perangkat.
- Apakah perangkat konkret mengimplementasikan
IDevice
antarmuka. - The
IDevice
antarmuka mungkin memiliki metode sepertiGetMeasurement
atauSetRange
. - Buat aplikasi memiliki pengetahuan tentang beton, dan meneruskan beton ke kode aplikasi yang memanfaatkan ( bukan mengimplementasikan )
IDevice
perangkat.
Saya cukup yakin bahwa ini adalah cara yang tepat untuk melakukannya, karena dengan begitu saya akan dapat mengganti perangkat apa yang sedang digunakan tanpa mempengaruhi aplikasi (yang sepertinya kadang-kadang terjadi). Dengan kata lain, tidak masalah bagaimana implementasi GetMeasurement
atau SetRange
benar - benar bekerja melalui beton (karena mungkin berbeda di antara produsen perangkat).
Satu-satunya keraguan dalam pikiran saya, adalah bahwa sekarang keduanya aplikasi, dan kelas konkret perangkat keduanya bergantung pada perpustakaan yang berisi IDevice
antarmuka. Tapi, apakah itu hal yang buruk?
Saya juga tidak melihat bagaimana aplikasi tidak perlu tahu tentang perangkat, kecuali perangkat dan IDevice
berada di namespace yang sama.
Pertanyaan
Apakah ini tampak seperti pendekatan yang tepat untuk mengimplementasikan antarmuka untuk memisahkan ketergantungan antara aplikasi saya dan perangkat yang digunakannya?