Virtuele leden
Notitie
Deze inhoud wordt opnieuw afgedrukt door toestemming van Pearson Education, Inc. van Framework Design Guidelines: Conventions, Idioms en Patterns for Reusable .NET Libraries, 2nd Edition. Die editie werd in 2008 gepubliceerd en het boek is sindsdien volledig herzien in de derde editie. Sommige informatie op deze pagina is mogelijk verouderd.
Virtuele leden kunnen worden overschreven, waardoor het gedrag van de subklasse wordt gewijzigd. Ze zijn vergelijkbaar met callbacks in termen van de uitbreidbaarheid die ze bieden, maar ze zijn beter in termen van uitvoeringsprestaties en geheugenverbruik. Ook voelen virtuele leden zich natuurlijker in scenario's die een speciaal type van een bestaand type (specialisatie) moeten maken.
Virtuele leden presteren beter dan callbacks en gebeurtenissen, maar presteren niet beter dan niet-virtuele methoden.
Het belangrijkste nadeel van virtuele leden is dat het gedrag van een virtueel lid alleen kan worden gewijzigd op het moment van compilatie. Het gedrag van een callback kan tijdens runtime worden gewijzigd.
Virtuele leden, zoals callbacks (en misschien meer dan callbacks), zijn kostbaar om te ontwerpen, te testen en te onderhouden, omdat elke aanroep naar een virtueel lid op onvoorspelbare manieren kan worden overschreven en willekeurige code kan uitvoeren. Bovendien is veel meer inspanning vereist om het contract van virtuele leden duidelijk te definiëren, zodat de kosten voor het ontwerpen en documenteren ervan hoger zijn.
❌ MAAK leden niet virtueel tenzij u een goede reden hebt om dit te doen en u op de hoogte bent van alle kosten met betrekking tot het ontwerpen, testen en onderhouden van virtuele leden.
Virtuele leden zijn minder vergevend in termen van wijzigingen die kunnen worden aangebracht zonder de compatibiliteit te verbreken. Ze zijn ook langzamer dan niet-virtuele leden, meestal omdat aanroepen naar virtuele leden niet inline zijn.
✔️ OVERWEEG de uitbreidbaarheid te beperken tot alleen wat absoluut noodzakelijk is.
✔️ DO geeft de voorkeur aan beveiligde toegankelijkheid via openbare toegankelijkheid voor virtuele leden. Openbare leden moeten uitbreidbaarheid bieden (indien nodig) door een beveiligd virtueel lid aan te roepen.
De openbare leden van een klasse moeten de juiste set functionaliteit bieden voor directe consumenten van die klasse. Virtuele leden zijn ontworpen om te worden overschreven in subklassen en beveiligde toegankelijkheid is een uitstekende manier om alle virtuele uitbreidbaarheidspunten te bepalen waar ze kunnen worden gebruikt.
© Delen 2005, 2009 Microsoft Corporation. Alle rechten voorbehouden.
Herdrukt door toestemming van Pearson Education, Inc. van Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published oct 22, 2008 by Addison-Wesley Professional als onderdeel van de Microsoft Windows Development Series.