Partager via


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

Conception en vue de l'extensibilité