Share via


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

Diseñar extensibilidad