Partager via


Sceller

Remarque

Ce contenu est réimprimé avec l’autorisation de Pearson Education, Inc. tiré de Lignes directrices de conception de framework : Conventions, Idiomes et Modèles pour les bibliothèques .NET réutilisables, 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 est que les développeurs peuvent les étendre et les personnaliser de manière inattendue par les concepteurs de framework. C’est à la fois la puissance et le danger de la conception extensible. Lorsque vous concevez votre infrastructure, il est donc très important de concevoir soigneusement pour l’extensibilité quand elle est souhaitée et de limiter l’extensibilité lorsqu’elle est dangereuse.

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

❌ NE PAS sceller les classes sans avoir une bonne raison de le faire.

Sceller une classe parce que vous ne pouvez pas penser à un scénario d’extensibilité n’est pas une bonne raison. Les utilisateurs de framework aiment hériter de 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 la conception de classe statique.

  • La classe stocke les secrets sensibles en matière 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 les sceller individuellement l’emporte sur les avantages de laisser la classe non scellée.

  • La classe est un attribut qui nécessite une recherche très rapide du runtime. Les attributs scellés ont des niveaux de performances légèrement plus élevés que ceux non scellés. Voir Attributs.

❌ Ne déclarez PAS de 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 les types scellés ne peuvent pas être appelés et que les méthodes virtuelles sur les types scellés ne peuvent pas être substituées.

✔️ ENVISAGEZ de sceller les membres que vous remplacez.

Les problèmes pouvant résulter de l’introduction de membres virtuels (abordés dans la section Membres virtuels) s’appliquent également aux remplacements, bien qu’à un degré légèrement moindre. Le scellement d’un remplacement vous protège de ces problèmes à partir de ce point dans la hiérarchie d’héritage.

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

Réimprimé par l’autorisation de Pearson Education, Inc. tiré de Framework Design Guidelines : Conventions, Idioms et Patterns pour les bibliothèques .NET réutilisables, 2e édition par Krzysztof Cwalina et Brad Abrams, publié le 22 octobre 2008 par Addison-Wesley Professional dans le cadre de la Série de développement Microsoft Windows.

Voir aussi