Bagikan melalui


Anggota Virtual

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.

Anggota virtual dapat ditimpa, sehingga mengubah perilaku subkelas. Mereka sangat mirip dengan panggilan balik dalam hal ekstensibilitas yang mereka berikan, tetapi mereka lebih baik dalam hal performa eksekusi dan konsumsi memori. Juga, anggota virtual terasa lebih alami dalam skenario yang membutuhkan pembuatan jenis khusus dari jenis yang ada (spesialisasi).

Anggota virtual berkinerja lebih baik daripada panggilan balik dan peristiwa, tetapi tidak berkinerja lebih baik daripada metode non-virtual.

Kerugian utama dari anggota virtual adalah bahwa perilaku anggota virtual hanya dapat dimodifikasi pada saat kompilasi. Perilaku panggilan balik dapat dimodifikasi pada waktu berjalan.

Anggota virtual, seperti panggilan balik (dan mungkin lebih dari panggilan balik), mahal untuk dirancang, diuji, dan dipelihara karena setiap panggilan ke anggota virtual dapat ditimpa dengan cara yang tidak dapat diprediksi dan dapat mengeksekusi kode arbitrer. Juga, lebih banyak usaha biasanya diperlukan untuk mendefinisikan dengan jelas kontrak anggota virtual, sehingga biaya merancang dan mendokumentasikannya lebih tinggi.

❌ JANGAN membuat anggota virtual kecuali Anda memiliki alasan yang bagus untuk melakukannya dan Anda mengetahui semua biaya yang terkait dengan merancang, menguji, dan memelihara anggota virtual.

Anggota virtual kurang toleran dalam hal perubahan yang dapat dilakukan kepada mereka tanpa melanggar kompatibilitas. Juga, mereka lebih lambat dari anggota non-virtual, terutama karena panggilan ke anggota virtual tidak dibariskan.

✔️ PERTIMBANGKAN untuk membatasi ekstensibilitas hanya pada yang benar-benar diperlukan.

✔️ PILIH aksesibilitas yang dilindungi daripada aksesibilitas publik untuk anggota virtual. Anggota publik harus memberikan ekstensibilitas (jika diperlukan) dengan memanggil anggota virtual yang dilindungi.

Anggota publik dari kelas harus menyediakan seperangkat fungsi yang tepat untuk konsumen langsung dari kelas itu. Anggota virtual dirancang untuk ditimpa dalam subkelas, dan aksesibilitas yang dilindungi adalah cara yang bagus untuk mencakup semua titik ekstensibilitas virtual ke tempat mereka dapat digunakan.

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