Ada beberapa hal yang muncul dari pertanyaan ini:
- antarmuka versus kelas
- kelas tertentu yang mana, dari beberapa kelas yang sama, koleksi, daftar, larik?
- Kelas umum versus koleksi subitem ("generik")
Anda mungkin ingin menyoroti bahwa itu adalah API Berorientasi Objek
antarmuka versus kelas
Jika Anda tidak memiliki banyak pengalaman dengan antarmuka, saya sarankan tetap mengikuti kelas. Saya melihat banyak kali pengembang beralih ke antarmuka, meskipun itu tidak perlu.
Dan, akhiri dengan melakukan desain antarmuka yang buruk, alih-alih, desain kelas yang baik, yang pada akhirnya dapat bermigrasi ke desain antarmuka yang baik ...
Anda akan melihat banyak antarmuka di API, tetapi, jangan terburu-buru, jika Anda tidak membutuhkannya.
Anda akhirnya akan belajar bagaimana menerapkan antarmuka, ke kode Anda.
kelas tertentu yang mana, dari beberapa kelas yang sama, koleksi, daftar, larik?
Ada beberapa kelas di c # (dotnet) yang dapat dipertukarkan. Seperti yang telah disebutkan, jika Anda membutuhkan sesuatu dari kelas yang lebih spesifik, seperti "CanBeSortedClass", buatlah itu eksplisit di API Anda.
Apakah pengguna API Anda benar-benar perlu tahu, bahwa kelas Anda dapat diurutkan, atau menerapkan beberapa format ke elemen? Kemudian gunakan "CanBeSortedClass" atau "ElementsCanBePaintedClass", jika tidak gunakan "GenericBrandClass".
Jika tidak, gunakan kelas yang lebih umum.
Kelas koleksi umum versus koleksi subitem ("generik")
Anda akan menemukan bahwa ada kelas yang berisi elemen lain, dan Anda dapat menentukan bahwa semua elemen harus dari tipe tertentu.
Koleksi Generik adalah kelas-kelas yang Anda dapat menggunakan koleksi yang sama, untuk beberapa aplikasi kode, tanpa harus membuat koleksi baru, untuk setiap jenis subitem baru, seperti ini: Koleksi .
Apakah pengguna API Anda membutuhkan tipe yang sangat spesifik, sama untuk semua elemen?
Gunakan sesuatu seperti List<WashingtonApple>
.
Apakah pengguna API Anda akan membutuhkan beberapa jenis terkait?
Ekspos List<Fruit>
untuk API Anda, dan gunakan List<Orange>
List<Banana>
, secara List<Strawberry>
internal, dari mana Orange
, Banana
dan Strawberry
merupakan turunannya Fruit
.
Apakah pengguna API Anda akan membutuhkan koleksi tipe generik?
Gunakan List
, di mana semua item berada object
.
Bersulang.