Kelas Dasar untuk Menerapkan Abstraksi

Nota

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.

Secara ketat, kelas menjadi kelas dasar ketika kelas lain berasal dari kelas tersebut. Namun, untuk tujuan bagian ini, kelas dasar adalah kelas yang dirancang terutama untuk memberikan abstraksi umum atau agar kelas lain dapat menggunakan kembali beberapa implementasi default melalui pewarisan. Kelas dasar biasanya duduk di tengah hierarki warisan, antara abstraksi di akar hierarki dan beberapa implementasi kustom di bagian bawah.

Mereka berfungsi sebagai pembantu implementasi untuk menerapkan abstraksi. Misalnya, salah satu abstraksi Framework untuk koleksi item yang dipesan adalah antarmuka IList<T>. Menerapkan IList<T> tidak sepele, dan oleh karena itu Kerangka Kerja menyediakan beberapa kelas dasar, seperti Collection<T> dan KeyedCollection<TKey,TItem>, yang berfungsi sebagai pembantu untuk menerapkan koleksi kustom.

Kelas dasar biasanya tidak cocok untuk berfungsi sebagai abstraksi sendiri, karena cenderung mengandung terlalu banyak implementasi. Misalnya, Collection<T> kelas dasar berisi banyak implementasi yang terkait dengan fakta bahwa ia mengimplementasikan antarmuka nongenerik IList (untuk berintegrasi lebih baik dengan koleksi nongenerik) dan fakta bahwa itu adalah kumpulan item yang disimpan dalam memori di salah satu bidangnya.

Seperti yang dibahas sebelumnya, kelas dasar dapat memberikan bantuan yang tak ternilai bagi pengguna yang perlu menerapkan abstraksi, tetapi pada saat yang sama mereka dapat menjadi tanggung jawab yang signifikan. Mereka menambahkan area permukaan dan meningkatkan kedalaman hierarki warisan dan secara konseptual mempersulit kerangka kerja. Oleh karena itu, kelas dasar harus digunakan hanya jika mereka memberikan nilai signifikan kepada pengguna kerangka kerja. Mereka harus dihindari jika mereka memberikan nilai hanya kepada pelaksana kerangka kerja, dalam hal ini delegasi ke implementasi internal alih-alih warisan dari kelas dasar harus sangat dipertimbangkan.

✔️ PERTIMBANGKAN untuk membuat kelas dasar abstrak meskipun tidak berisi anggota abstrak. Ini dengan jelas berkomunikasi kepada pengguna bahwa kelas dirancang hanya untuk diwariskan.

✔️ PERTIMBANGKAN untuk menempatkan kelas dasar di namespace terpisah dari jenis skenario utama. Menurut definisi, kelas dasar ditujukan untuk skenario ekstensibilitas tingkat lanjut dan oleh karena itu tidak menarik bagi sebagian besar pengguna.

❌ HINDARI penamaan kelas dasar dengan akhiran "Dasar" jika kelas dimaksudkan untuk digunakan dalam API publik.

© Sebagian 2005, 2009 Microsoft Corporation. Hak cipta dilindungi oleh undang-undang

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 oleh Krzysztof Cwalina dan Brad Abrams, diterbitkan 22 Okt 2008 oleh Addison-Wesley Professional sebagai bagian dari Seri Pengembangan Microsoft Windows.

Lihat juga