Desain Antarmuka
Catatan
Konten ini dicetak ulang oleh izin Pearson Education, Inc. dari Panduan Desain Kerangka Kerja: Konvensi, Idiom, dan Pola untuk Pustaka .NET yang Dapat Digunakan Kembali, Edisi ke-2. Edisi itu diterbitkan pada tahun 2008, dan buku tersebut telah sepenuhnya direvisi pada edisi ketiga. Beberapa informasi di halaman ini mungkin sudah kedaluarsa.
Meskipun sebagian besar API paling baik dimodelkan menggunakan kelas dan struktur, ada kasus di mana antarmuka lebih tepat atau merupakan satu-satunya pilihan.
CLR tidak mendukung beberapa pewarisan (yaitu, kelas CLR tidak dapat mewarisi dari lebih dari satu kelas dasar), tetapi memungkinkan jenis untuk mengimplementasikan satu atau lebih antarmuka selain mewarisi dari kelas dasar. Oleh karena itu, antarmuka sering digunakan untuk mencapai efek dari beberapa pewarisan. Misalnya, IDisposable adalah antarmuka yang mengizinkan jenis untuk mendukung penggunaan sekali pakai terlepas dari hierarki warisan lainnya di mana mereka ingin berpartisipasi.
Situasi lain di mana mendefinisikan antarmuka yang sesuai adalah dalam membuat antarmuka umum yang dapat didukung oleh beberapa jenis, termasuk beberapa jenis nilai. Jenis nilai tidak dapat mewarisi dari jenis selain ValueType, tetapi dapat mengimplementasikan antarmuka, jadi menggunakan antarmuka adalah satu-satunya opsi untuk menyediakan jenis dasar umum.
✔️ TENTUKAN antarmuka jika Anda memerlukan beberapa API umum untuk didukung oleh serangkaian jenis yang mencakup jenis nilai.
✔️ PERTIMBANGKAN untuk mendefinisikan antarmuka jika Anda perlu mendukung fungsinya pada jenis yang sudah mewarisi dari beberapa jenis lain.
❌ HINDARI menggunakan antarmuka penanda (antarmuka tanpa anggota).
Jika Anda perlu menandai kelas sebagai memiliki karakteristik tertentu (penanda), secara umum, gunakan atribut kustom daripada antarmuka.
✔️ SEDIAKAN setidaknya satu jenis yang merupakan implementasi dari antarmuka.
Melakukan hal ini membantu memvalidasi desain antarmuka. Misalnya, List<T> adalah implementasi dari antarmuka IList<T>.
✔️ SEDIAKAN setidaknya satu API yang mengkonsumsi setiap antarmuka yang Anda tentukan (metode yang mengambil antarmuka sebagai parameter atau properti yang berjenis sebagai antarmuka).
Melakukan hal ini membantu memvalidasi desain antarmuka. Misalnya, List<T>.Sort mengonsumsi antarmuka System.Collections.Generic.IComparer<T>.
❌ JANGAN menambahkan anggota ke antarmuka yang sebelumnya telah dikirim.
Melakukan hal itu akan merusak implementasi antarmuka. Anda harus membuat antarmuka baru untuk menghindari masalah versi.
Kecuali untuk situasi yang dijelaskan dalam pedoman ini, Anda harus, secara umum, memilih kelas daripada antarmuka dalam merancang pustaka kode yang dapat digunakan kembali secara terkelola.
Portions © 2005, 2009 Microsoft Corporation. Semua hak dilindungi undang-undang.
Dicetak ulang dengan izin dari Pearson Education, Inc. dari Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition oleh Krzysztof Cwalina dan Brad Abrams, diterbitkan 22 Okt 2008 oleh Addison-Wesley Professional sebagai bagian dari Seri Pengembangan Microsoft Windows.