Compartilhar via


Classes base para a implementação de abstrações

As classes base para a implementação de abstrações são classes projetadas para ajudar os desenvolvedores na implementação de classes abstratas e interfaces (abstrações). Eles fornecem alguns dos detalhes de implementação de uma abstração e em alguns casos, eles podem ser utilizáveis sem herança. Por exemplo, Collection<T> pode ser usado para criar uma coleção ou podem ser herdadas para definir uma classe de coleção fortemente tipada.

O exemplo de código a seguir demonstra o uso de Collection<T> classe para criar um objeto de coleção fortemente tipada.

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();
    }
}

O exemplo de código a seguir demonstra o uso de Collection<T> classe para definir uma coleção fortemente tipada.

Public Class PointCollection
    Inherits Collection(Of Point)
End Class
public class PointCollection : Collection<Point> {}

O CollectionBase classe é outro exemplo de um.Classe de base. NET Framework Esta classe ajuda os desenvolvedores implementar coleções não genéricas. Ao contrário de Collection<T>, CollectionBase não pode ser usado diretamente.

As classes base para a implementação de abstrações devem ser fornecidas como parte de uma biblioteca somente quando eles adicionam valor significativo para os desenvolvedores que usam a biblioteca. No caso em que uma classe base ajuda somente na implementação de uma biblioteca, a classe base não deve ser visível publicamente. Para usar uma classe base internamente para simplificar o desenvolvimento de biblioteca, os membros públicos devem delegar trabalho para a classe base, em vez de herança a partir dele.

Considere as classes base abstratas, mesmo se não contiverem quaisquer membros abstratos. Isso se comunica claramente aos usuários que a classe destina-se exclusivamente a ser herdado de.

Considere a colocação de classes base em um namespace separado do cenário principal APIs. Por definição, as classes base destinam-se a cenários de extensibilidade avançada e não são interessantes para a maioria dos usuários.

Evite a nomeação de bases de classe com o sufixo de Base se a classe se destina a ser usado em APIs públicas.

Se a biblioteca expõe a classe base como um tipo de retorno ou tipo de parâmetro, não deve ter o Base sufixo.

Portions Copyright 2005 Microsoft Corporation. Todos os direitos reservados.

Portions Copyright Addison-Wesley Corporation. Todos os direitos reservados.

Para obter mais informações sobre as diretrizes de design, consulte a "diretrizes de Design do Framework: Convenções, idiomas e padrões de reutilizável.Bibliotecas de rede" catálogo por Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.

Consulte também

Outros recursos

Diretrizes de Design para desenvolvimento bibliotecas de classe

Criação de extensibilidade