Classes de base pour l'implémentation d'abstractions
Les classes de base pour l'implémentation d'abstractions sont des classes conçues pour aider les développeurs à implémenter des classes et des interfaces abstraites (abstractions). Elles fournissent une partie des détails d'implémentation relatifs à une abstraction et, dans certains cas, elles peuvent être utilisées sans héritage. Par exemple, il est possible d'utiliser la classe Collection<T> pour créer une collection ou d'en hériter pour définir une classe de collection fortement typée.
L'exemple de code suivant illustre l'utilisation de la classe Collection<T> pour créer un objet de collection fortement typé.
Public Class PointManager
Implements IEnumerable
Private pointCollection As Collection(Of Point) = New Collection(Of Point)
Public Sub AddPoint(ByVal p As Point)
pointCollection.Add(p)
End Sub
Public Function RemovePoint(ByVal p As Point) As Boolean
Return pointCollection.Remove(p)
End Function
Public Function GetEnumerator() As IEnumerator _
Implements IEnumerable.GetEnumerator
Return pointCollection.GetEnumerator
End Function
End Class
public class PointManager : IEnumerable
{
Collection<Point> pointCollection = new Collection<Point>();
public void AddPoint(Point p)
{
pointCollection.Add(p);
}
public bool RemovePoint(Point p)
{
return pointCollection.Remove(p);
}
public IEnumerator GetEnumerator()
{
return pointCollection.GetEnumerator();
}
}
L'exemple de code suivant illustre l'utilisation de la classe Collection<T> pour définir une collection fortement typée.
Public Class PointCollection
Inherits Collection(Of Point)
End Class
public class PointCollection : Collection<Point> {}
La classe CollectionBase est un autre exemple de classe de base .NET Framework. Cette classe aide des développeurs à implémenter des collections non génériques. Contrairement à Collection<T>, la classe CollectionBase ne peut pas être utilisée directement.
Les classes de base servant à l'implémentation d'abstractions doivent être fournies dans le cadre d'une bibliothèque uniquement lorsqu'elles représentent une valeur ajoutée significative pour les développeurs qui utilisent la bibliothèque. Dans le cas où une classe de base aide uniquement à l'implémentation d'une bibliothèque, elle ne doit pas être visible publiquement. Pour utiliser une classe de base en interne afin de simplifier le développement de bibliothèques, les membres publics doivent déléguer les tâches à la classe de base au lieu d'en hériter.
Envisagez l'abstraction des classes de base même si elles ne contiennent pas de membres abstraits. Vous indiquez ainsi clairement aux utilisateurs que la classe est conçue aux seules fins d'héritage.
Envisagez de placer des classes de base dans un espace de noms distinct des API des scénarios principaux. Par définition, les classes de base sont prévues pour des scénarios d'extensibilité avancés et ne présentent aucun intérêt pour la plupart des utilisateurs.
Évitez d'attribuer le suffixe Base au nom de la classe de base si vous prévoyez d'utiliser la classe dans des API publiques.
Si la bibliothèque expose la classe de base comme un type de retour ou un type de paramètres, elle ne doit pas avoir de suffixe Base.
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