Bagikan melalui


Jenis Berlapis

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.

Jenis bersarang adalah jenis yang didefinisikan dalam cakupan jenis lain, yang disebut jenis induk. Jenis bertumpuk memiliki akses ke semua anggota jenis induknya. Misalnya, ia memiliki akses ke bidang privat yang ditentukan dalam tipe pembungkus dan ke bidang terlindungi yang ditentukan dalam semua leluhur dari tipe pembungkus.

Secara umum, tipe bersarang harus digunakan dengan hemat. Ada beberapa alasan untuk ini. Beberapa pengembang tidak sepenuhnya terbiasa dengan konsep tersebut. Pengembang ini mungkin, misalnya, memiliki masalah dengan sintaksis mendeklarasikan variabel jenis berlapis. Jenis berlapis juga sangat erat digabungkan dengan jenis penutupnya, dan karenanya tidak cocok untuk menjadi jenis tujuan umum.

Jenis berlapis paling cocok untuk memodelkan detail implementasi jenis penutupnya. Pengguna akhir jarang harus mendeklarasikan variabel dari jenis berlapis dan hampir tidak harus secara eksplisit membuat instans jenis berlapis. Misalnya, enumerator koleksi dapat menjadi jenis berlapis dari koleksi tersebut. Enumerator biasanya diinstansiasi oleh tipe yang melingkupinya, dan karena banyak bahasa mendukung pernyataan foreach, variabel enumerator jarang harus dideklarasikan oleh pengguna akhir.

✔️ DO menggunakan jenis berlapis ketika hubungan antara jenis berlapis dan jenis luarnya demikian rupa sehingga semantik aksesibilitas anggota diinginkan.

❌ JANGAN gunakan tipe bersarang publik sebagai konstruksi pengelompokan logis; gunakan namespace untuk ini.

❌ HINDARI tipe bersarang yang terekspos ke publik. Satu-satunya pengecualian untuk ini adalah jika variabel jenis berlapis perlu dideklarasikan hanya dalam skenario langka seperti subkelas atau skenario kustomisasi tingkat lanjut lainnya.

❌ JANGAN gunakan tipe bersarang jika tipe tersebut kemungkinan akan direferensikan di luar tipe yang menampung.

Misalnya, enum yang diteruskan ke metode yang didefinisikan pada kelas tidak boleh didefinisikan sebagai tipe bersarang dalam kelas.

❌ JANGAN gunakan jenis berlapis jika perlu dibuat oleh kode klien. Jika tipe memiliki konstruktor publik, sebaiknya tidak disarangkan.

Jika tipe dapat diinstansiasi, itu tampaknya menunjukkan bahwa tipe tersebut memiliki tempat dalam kerangka sendirinya (Anda dapat membuatnya, bekerja dengannya, dan menghancurkannya tanpa pernah menggunakan tipe yang lebih luar), dan dengan demikian tidak boleh diletakkan secara bersarang. Jenis dalam tidak boleh digunakan kembali secara luas di luar jenis luar tanpa hubungan apa pun dengan jenis luar.

❌ JANGAN tentukan jenis berlapis sebagai anggota antarmuka. Banyak bahasa tidak mendukung konstruksi seperti itu.

© 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