Clases base para implementar abstracciones
Actualización: noviembre 2007
Las clases base para implementar abstracciones son clases diseñadas para ayudar a los desarrolladores a implementar clases abstractas e interfaces (abstracciones). Proporcionan algunos de los detalles de implementación de una abstracción y en algunos casos pueden utilizarse sin herencia. Por ejemplo, Collection<T> se puede utilizar para crear una colección o se puede heredar de ella para definir una clase de colección con establecimiento inflexible de tipos.
El ejemplo de código siguiente muestra cómo utilizar la clase Collection<T> para crear un objeto de colección con establecimiento inflexible de tipos.
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();
}
}
El ejemplo de código siguiente muestra cómo utilizar la clase Collection<T> para definir un objeto de colección con establecimiento inflexible de tipos.
Public Class PointCollection
Inherits Collection(Of Point)
End Class
public class PointCollection : Collection<Point> {}
La clase CollectionBase es otro ejemplo de clase base de .NET Framework. Esta clase ayuda a los desarrolladores a implementar colecciones no genéricas. A diferencia de Collection<T>, CollectionBase no se puede utilizar directamente.
Sólo se deben proporcionar clases base para implementar abstracciones como parte de una biblioteca cuando agreguen un valor significativo a los desarrolladores que utilicen la biblioteca. En el caso de que una clase base sólo ayude en la implementación de una biblioteca, la clase base no debería estar públicamente visible. Para utilizar internamente una clase base para simplificar el desarrollo de bibliotecas, los miembros públicos deberían delegar el trabajo en la clase base en lugar de heredar de ella.
Evite asignar nombres a las clases base con el sufijo Base si las clases están pensadas para ser utilizadas en interfaces API públicas.
Si la biblioteca expone la clase base como un tipo de valor devuelto o un tipo de parámetro, no debería tener el sufijo Base.
Portions Copyright 2005 Microsoft Corporation. Reservados todos los derechos.
Portions Copyright Addison-Wesley Corporation. Reservados todos los derechos.
Para obtener más información sobre las directrices de diseño, consulte el libro titulado "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" de Krzysztof Cwalina y Brad Abrams, publicado por Addison-Wesley, 2005.
Vea también
Otros recursos
Instrucciones de diseño para desarrollar bibliotecas de clases