Clases base para implementar abstracciones
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.
Considere la posibilidad de hacer que las clases base sean abstractas incluso aunque no contengan ningún miembro abstracto. Esto indica claramente a los usuarios que la clase está diseñada únicamente para que se herede de ella.
Plantéese colocar las clases base en un espacio de nombres independiente del escenario principal de las interfaces API. Por definición, las clases base están pensadas para escenarios de extensibilidad avanzados y no son interesantes para la mayoría de usuarios.
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 “las instrucciones de diseño de Framework: Convenciones, frases realizadas y modelos para libro de bibliotecas reutilizables de .NET” de Krzysztof Cwalina y Brad Abrams, publicados por Addison-Wesley, 2005.
Vea también
Otros recursos
Instrucciones de diseño para desarrollar bibliotecas de clases