Afdichting
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.
Een van de functies van objectgeoriënteerde frameworks is dat ontwikkelaars deze kunnen uitbreiden en aanpassen op manieren die niet worden verwacht door de frameworkontwerpers. Dit is zowel de kracht als het gevaar van uitbreidbaar ontwerp. Wanneer u uw framework ontwerpt, is het daarom erg belangrijk om zorgvuldig te ontwerpen voor uitbreidbaarheid wanneer het gewenst is en om de uitbreidbaarheid te beperken wanneer het gevaarlijk is.
Een krachtig mechanisme dat uitbreidbaarheid voorkomt, is verzegelen. U kunt de klas of individuele leden verzegelen. Het verzegelen van een klasse voorkomt dat gebruikers overnemen van de klasse. Het afdichten van een lid voorkomt dat gebruikers een bepaald lid overschrijven.
❌ VERzegel klassen NIET zonder een goede reden om dit te doen.
Het afdichten van een klasse omdat u geen uitbreidbaarheidsscenario kunt bedenken, is geen goede reden. Frameworkgebruikers nemen graag over van klassen om verschillende niet-voor de hand liggende redenen, zoals het toevoegen van gemaksleden. Zie Niet-verzegelde klassen voor voorbeelden van niet-voor de hand liggende redenen die gebruikers van een type willen overnemen.
Goede redenen voor het afdichten van een klasse zijn onder andere:
De klasse is een statische klasse. Zie Het ontwerp van statische klassen.
De klasse slaat beveiligingsgevoelige geheimen op in overgenomen beveiligde leden.
De klasse neemt veel virtuele leden over en de kosten voor het afzonderlijk afdichten ervan wegen op tegen de voordelen van het verlaten van de klasse niet-verzegeld.
De klasse is een kenmerk dat zeer snelle runtime look-up vereist. Verzegelde kenmerken hebben iets hogere prestatieniveaus dan niet-verzegelde kenmerken. Zie kenmerken.
❌ DECLAREER GEEN beveiligde of virtuele leden op verzegelde typen.
Verzegelde typen kunnen per definitie niet worden overgenomen. Dit betekent dat beveiligde leden op verzegelde typen niet kunnen worden aangeroepen en dat virtuele methoden voor verzegelde typen niet kunnen worden overschreven.
✔️ OVERWEEG leden te verzegelen die u overschrijft.
Problemen die kunnen voortvloeien uit het introduceren van virtuele leden (besproken in virtuele leden) zijn ook van toepassing op onderdrukkingen, maar in iets mindere mate. Het afdichten van een onderdrukkingsschild dat u ondervindt vanaf dat punt in de overnamehiërarchie.
© 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.