Interfaces e tipos abstratos
Interfaces e tipos abstratos são os dois mecanismos para a especificação de abstrações de programação. Uma abstração Especifica um contrato que os herdeiros ou implementadores devem aderir. Tipos abstratos têm a opção de fornecer detalhes de implementação; interfaces não podem fornecer quaisquer detalhes de implementação.
Não oferecem abstrações, a menos que eles são testados, desenvolvendo várias implementações concretas e APIs que consomem as abstrações.
Se você enviar abstrações sem testá-las em cenários reais, você provavelmente perderá as questões de design que são difíceis ou impossíveis de corrigir sem introduzir compatibilidade problemas em versões futuras.
Escolha cuidadosamente entre uma classe abstrata e uma interface ao projetar uma abstração.
Para obter uma discussão detalhada sobre como selecionar um tipo abstrato ou interface, consulte Escolhendo entre Classes e Interfaces.
Considere fornecer testes de referência para as implementações concretas de abstrações. Esses testes devem permitir que os usuários testar se a suas implementações implementam corretamente o contrato.
Os testes de referência são testes que permitem que você implementou uma interface corretamente. Por exemplo, um teste para ICollection<T> pode verificar que a chamada após a Add método duas vezes em uma instância de implementar a interface, o Count propriedade aumenta por dois.
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