Partager via


Sceller

Remarque

Ce contenu est réimprimé avec l’autorisation de Pearson Education, Inc. à partir des Instructions de conception d’une infrastructure : conventions, idiomes et modèles des bibliothèques réutilisables .NET, 2ème édition. Cette édition a été publiée en 2008, et le livre a été entièrement révisé dans la troisième édition. Certaines informations de cette page peuvent être obsolètes.

L’une des fonctionnalités des frameworks orientés objet permet aux développeurs de les étendre et les personnaliser de manière non anticipée avec les concepteurs de framework. Cette possibilité constitue à la fois la puissance et les dangers d’une conception extensible. Lorsque vous concevez votre framework, il est donc très important de concevoir soigneusement l’extensibilité lorsqu’elle est voulue et de la limiter lorsqu’elle est dangereuse.

Le scellement est un mécanisme puissant qui empêche l’extensibilité. Vous pouvez sceller la classe ou les membres individuels. Le scellement d’une classe empêche les utilisateurs d’hériter de cette classe. Le scellement d’un membre empêche les utilisateurs de remplacer un membre particulier.

❌ NE SCELLEZ PAS des classes sans avoir une bonne raison de le faire.

Il n’est pas judicieux de sceller une classe parce que vous ne parvenez pas à envisager un scénario d’extensibilité. Les utilisateurs du framework aiment hériter des classes pour diverses raisons non évidentes, comme l’ajout de membres pratiques. Consultez Classes non scellées pour obtenir des exemples de raisons non évidentes pour lesquelles les utilisateurs souhaitent hériter d’un type.

Les bonnes raisons de sceller une classe sont les suivantes :

  • La classe est une classe statique. Consultez Conception de classes statiques.

  • La classe stocke des secrets sensibles de sécurité dans des membres protégés hérités.

  • La classe hérite de nombreux membres virtuels et le coût de leur scellement individuel dépasserait les avantages à laisser la classe non scellée.

  • La classe est un attribut qui nécessite une recherche d’exécution très rapide. Les attributs scellés ont des niveaux de performances légèrement plus élevés que les attributs non scellés. Consultez Attributs.

❌ NE DÉCLAREZ PAS des membres protégés ou virtuels sur des types scellés.

Par définition, les types scellés ne peuvent pas être hérités. Cela signifie que les membres protégés sur des types scellés ne peuvent pas être appelés et que les méthodes virtuelles sur des types scellés ne peuvent pas être remplacées.

✔️ ENVISAGEZ de sceller les membres que vous remplacez.

Les problèmes que peut entraîner l’introduction de membres virtuels (décrits dans Membres virtuels) s’appliquent également aux remplacements, bien qu’à un degré légèrement moindre. Le scellement d’un remplacement vous protège contre ces problèmes à partir de ce point dans la hiérarchie d’héritage.

Portions © 2005, 2009 Microsoft Corporation. Tous droits réservés.

Réimprimé avec l’autorisation de Pearson Education, Inc. et extrait de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition par Krzysztof Cwalina et Brad Abrams, publié le 22 octobre 2008 par Addison-Wesley Professional dans le cadre de la série sur le développement Microsoft Windows.

Voir aussi