Sanal Üyeler
Not
Bu içerik, Çerçeve Tasarım Yönergeleri: Kurallar, Deyimler ve Yeniden Kullanılabilir .NET Kitaplıkları için Desenler, 2. Sürüm'den Pearson Education, Inc.'in izniyle yeniden yazdırılır. Bu baskı 2008'de yayımlandı ve kitap o zamandan beri üçüncü baskıda tamamen revize edilmiştir. Bu sayfadaki bazı bilgiler güncel olmayabilir.
Sanal üyeler geçersiz kılınabilir, bu nedenle alt sınıfın davranışı değiştirilir. Sağladıkları genişletilebilirlik açısından geri çağırmalara oldukça benzerler, ancak yürütme performansı ve bellek tüketimi açısından daha iyidirler. Ayrıca sanal üyeler, özel türde bir mevcut tür (özelleştirme) oluşturmayı gerektiren senaryolarda kendilerini daha doğal hissederler.
Sanal üyeler geri çağırmalardan ve olaylardan daha iyi performans gösterir, ancak sanal olmayan yöntemlerden daha iyi performans göstermez.
Sanal üyelerin temel dezavantajı, bir sanal üyenin davranışının yalnızca derleme sırasında değiştirilebiliyor olmasıdır. Geri çağırmanın davranışı çalışma zamanında değiştirilebilir.
Sanal üyeye yapılan tüm çağrılar öngörülemeyen yollarla geçersiz kılınabileceğinden ve rastgele kod yürütebileceğinden, geri çağırmalar (ve belki de geri çağırmalardan daha fazlası) gibi sanal üyelerin tasarlanması, test edilmesi ve bakımının yapılması maliyetlidir. Ayrıca, genellikle sanal üyelerin sözleşmesini net bir şekilde tanımlamak için çok daha fazla çaba gerekir, bu nedenle bunları tasarlama ve belgeleme maliyeti daha yüksektir.
❌ Bunu yapmak için iyi bir nedeniniz yoksa ve sanal üyeleri tasarlama, test etme ve bakımını yapma ile ilgili tüm maliyetlerin farkında değilseniz üyeleri sanal yapmaYIN.
Sanal üyeler, uyumluluk bozulmadan kendilerine yapılabilecek değişiklikler açısından daha az bağışlayıcıdır. Ayrıca, çoğunlukla sanal üyelere yapılan çağrılar çizili olmadığından, sanal olmayan üyelerden daha yavaştırlar.
✔️ Genişletilebilirliği yalnızca kesinlikle gerekli olanla sınırlamayı GÖZ ÖNÜNDE BULUNDURUN.
✔️ DO, sanal üyeler için genel erişilebilirlik yerine korumalı erişilebilirliği tercih eder. Ortak üyeler korumalı bir sanal üyeye çağrı yaparak genişletilebilirlik (gerekirse) sağlamalıdır.
Bir sınıfın genel üyeleri, bu sınıfın doğrudan tüketicileri için doğru işlev kümesini sağlamalıdır. Sanal üyeler alt sınıflarda geçersiz kılınacak şekilde tasarlanmıştır ve korumalı erişilebilirlik, tüm sanal genişletilebilirlik noktalarının nerede kullanılabileceğini kapsamanın harika bir yoludur.
Porsiyonlar © 2005, 2009 Microsoft Corporation. Tüm hakları saklıdır.
Pearson Education, Inc. in Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraryes, 2nd Edition by Krzysztof Cwalina and Brad Abrams izniyle yeniden yazdırıldı ve 22 Ekim 2008'de Addison-Wesley Professional tarafından Microsoft Windows Geliştirme Serisi'nin bir parçası olarak yayımlandı.