Bagikan melalui


Jenis Berlapis

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.

Jenis berlapis adalah jenis yang ditentukan dalam cakupan jenis lain, yang disebut jenis pengapitan. Jenis berlapis memiliki akses ke semua anggota jenis pengapitannya. Misalnya, jenis ini memiliki akses ke bidang privat yang ditentukan dalam jenis tertutup dan bidang terlindungi yang ditentukan di semua yang naik dari jenis pengapitan.

Biasanya, jenis berlapis harus digunakan dengan hemat. Ada beberapa alasan untuk ini. Beberapa pengembang tidak sepenuhnya terbiasa dengan konsep tersebut. Misalnya, pengembang tersebut mungkin kesulitan dengan sintaks deklarasi variabel jenis berlapis. Jenis berlapis juga digabungkan sangat erat dengan jenis pengapitannya, dan karenanya tidak cocok untuk menjadi jenis tujuan umum.

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

✔️ GUNAKAN jenis berlapis ketika hubungan antara jenis berlapis dan jenis luarnya sedih sehingga semantik aksesibilitas anggota diinginkan.

❌ JANGAN gunakan jenis berlapis publik sebagai konstruksi pengelompokan logis; gunakan namespace layanan untuk hal ini.

❌ HINDARI jenis berlapis yang diekspos secara publik. Jenis ini dapat diekspos hanya jika variabel jenis berlapisnya perlu dideklarasikan pada skenario yang jarang terjadi, seperti membuat subkelas atau skenario penyesuaian lanjutan lainnya.

❌ JANGAN gunakan jenis berlapis jika jenis tersebut kemungkinan akan direferensikan di luar jenis yang berisi.

Misalnya, enum yang diteruskan ke metode yang ditentukan pada kelas tidak boleh ditentukan sebagai jenis berlapis di kelas.

❌ JANGAN gunakan jenis berlapis jika perlu diinstansiasi oleh kode klien. Jika memiliki konstruktor publik, suatu jenis mungkin tidak perlu dilapisi.

Jika suatu jenis dapat diinstansiasikan, hal ini menunjukkan jenis tersebut memiliki tempat di kerangka kerja dengan sendirinya (Anda dapat membuatnya, menggunakannya, dan menghancurkannya tanpa pernah menggunakan jenis luar), sehingga tidak perlu dilapisi. Jenis dalam tidak boleh digunakan ulang 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.

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.

Lihat juga