Types et interfaces abstraits
Les interfaces et les types abstraits sont deux mécanismes permettant de spécifier des abstractions par programme. Une abstraction spécifie un contrat auquel les héritiers ou les implémenteurs doivent adhérer. Les types abstraits offrent la possibilité de fournir des détails de l'implémentation, ce qui n'est pas le cas des interfaces.
Ne fournissez pas d'abstractions sauf si elles sont testées par le développement de plusieurs implémentations concrètes et d'API utilisant les abstractions.
Si vous fournissez des abstractions sans les tester dans des scénarios réels, vous ne serez vraisemblablement pas en mesure de détecter des problèmes de conception difficiles ou impossibles à résoudre sans introduire de problèmes de compatibilité dans les versions ultérieures.
Évaluez avec soin tous les éléments lorsque vous choisissez une classe abstraite ou une interface lors de la conception d'une abstraction.
Pour une présentation détaillée de la sélection d'un type abstrait ou d'une interface, consultez Choix entre des classes et des interfaces.
Envisagez de fournir des tests de référence pour des implémentations concrètes d'abstractions. De tels tests doivent permettre aux utilisateurs de vérifier si leurs implémentations implémentent correctement le contrat.
Les tests de référence sont des tests qui permettent de vérifier si vous avez correctement implémenté une interface. Par exemple, un test de ICollection<T> permet de vérifier qu'après avoir appelé deux fois la méthode Add sur une instance implémentant l'interface, la propriété Count augmente de deux.
Portions Copyright 2005 Microsoft Corporation. Tous droits réservés.
Portions Copyright Addison-Wesley Corporation. Tous droits réservés.
Pour plus d'informations sur les règles de conception, consultez « règles de conception d'infrastructure : Conventions idiomes et modèles carnet de bibliothèques réutilisables framework » Krzysztof Cwalina et Brad Abrams, publiés par Addison-Wesley, 2005.
Voir aussi
Autres ressources
Instructions de conception pour le développement de bibliothèques de classes