Design de classe abstrata

Observação

Este conteúdo é reimpresso com permissão da Pearson Education, Inc. de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Essa edição foi publicada em 2008 e, desde então, o livro foi totalmente revisado na terceira edição. Algumas das informações nesta página podem estar desatualizadas.

❌ NÃO defina construtores internos públicos ou protegidos em tipos abstratos.

Os construtores devem ser públicos somente se os usuários precisarem criar instâncias do tipo. Como não é possível criar instâncias de um tipo abstrato, um tipo abstrato com um construtor público é projetado incorretamente e pode ser enganoso para os usuários.

✔️ Defina um construtor protegido ou interno em classes abstratas.

Um construtor protegido é mais comum e simplesmente permite que a classe base faça a própria inicialização quando subtipos forem criados.

Um construtor interno pode ser usado para limitar implementações concretas da classe abstrata ao assembly que define a classe.

✔️ Forneça pelo menos um tipo concreto herdado de cada classe abstrata enviada.

Isso ajuda a validar o design da classe abstrata. Por exemplo, System.IO.FileStream é uma implementação da classe abstrata System.IO.Stream.

Portions © 2005, 2009 Microsoft Corporation. Todos os direitos reservados.

Reimpresso com permissão da Pearson Education, Inc. das Diretrizes de Design do Framework: convenções, linguagens e padrões para bibliotecas do .NET reutilizável, 2ª edição por Krzysztof Cwalina e Brad Abrams, publicado em 22 de outubro de 2008 por Addison-Wesley Professional como parte da série de desenvolvimento do Microsoft Windows.

Confira também