Basisklassen zum Implementieren von Abstraktionen
Aktualisiert: November 2007
Basisklassen zum Implementieren von Abstraktionen sind Klassen, die Entwicklern das Implementieren abstrakter Klassen und Schnittstellen (Abstraktionen) erleichtern sollen. Sie stellen einige Implementierungsdetails für eine Abstraktion bereit und können in manchen Fällen ohne Vererbung verwendet werden. Beispielsweise kann Collection<T> zum Erstellen einer Auflistung verwendet oder geerbt werden, um eine stark typisierte Auflistungsklasse zu definieren.
Im folgenden Codebeispiel wird die Verwendung der Collection<T>-Klasse zum Erstellen eines stark typisierten Auflistungsobjekts veranschaulicht.
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();
}
}
Im folgenden Codebeispiel wird die Verwendung der Collection<T>-Klasse zum Definieren einer stark typisierten Auflistung veranschaulicht.
Public Class PointCollection
Inherits Collection(Of Point)
End Class
public class PointCollection : Collection<Point> {}
Die CollectionBase-Klasse ist ein weiteres Beispiel für eine .NET Framework-Basisklasse. Mit dieser Klasse können Entwickler nicht generische Auflistungen implementieren. Im Gegensatz zu Collection<T> kann CollectionBase nicht direkt verwendet werden.
Basisklassen zum Implementieren von Abstraktionen sollten nur als Bestandteil einer Bibliothek bereitgestellt werden, wenn sie für Entwickler, die die Bibliothek verwenden, einen beträchtlichen Nutzen darstellen. Wenn eine Basisklasse nur zum Implementieren einer Bibliothek verwendet wird, sollte die Basisklasse nicht öffentlich sichtbar sein. Um ein Basisklasse intern zum Vereinfachen der Bibliotheksentwicklung zu verwenden, sollten öffentliche Member Funktionen an die Basisklasse delegieren, statt von ihr zu erben.
Benennen Sie Basisklassen nicht mit dem Suffix Base, wenn die Klasse für die Verwendung in öffentlichen APIs vorgesehen ist.
Wenn die Bibliothek die Basisklasse als Rückgabe- oder Parametertyp verfügbar macht, darf sie nicht das Suffix Base aufweisen.
Copyright für einzelne Teile 2005 Microsoft Corporation. Alle Rechte vorbehalten.
Copyright für einzelne Teile Addison-Wesley Corporation. Alle Rechte vorbehalten.
Weitere Informationen zu Entwurfsrichtlinien finden Sie im Buch "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" von Krzysztof Cwalina und Brad Abrams, veröffentlicht von Addison-Wesley, 2005.