Quando usar delega em vez de interfaces (guia de programação translation from VPE for Csharp)

Delegados e interfaces permitem um designer de classe separar a implementação e declarações de tipo.Um determinado interface podem ser herdadas e implementada por qualquer classe or struct.A Delegar pode ser criada para um método em qualquer classe, contanto que o método se adapta a assinatura do método para o delegado.Uma referência de interface ou um delegado pode ser usado por um objeto não tem conhecimento da classe que implementa o método de interface nem delegado.Dadas essas semelhanças, quando um designer de classe deve usar um delegado e quando ele deve usar uma interface?

Use um delegado nas seguintes circunstâncias:

  • Um padrão de design de eventos é usado.

  • É desejável para encapsular um método estático.

  • O chamador não tem nenhuma necessidade de acessar outras propriedades, métodos ou interfaces no objeto de implementação do método.

  • Fácil de composição é desejada.

  • Uma classe pode ser necessário mais de uma implementação do método.

Use uma interface nas seguintes circunstâncias:

  • Há um agrupar de métodos relacionados que podem ser chamados.

  • Uma classe só precisa de uma implementação do método.

  • A classe usando a interface desejará converter outros tipos de interface ou classe dessa interface.

  • O método sendo implementado é vinculado ao tipo ou identidade da classe: Por exemplo, métodos de comparação.

Um mercadoria exemplo do uso de uma interface de método único em vez de um delegado é IComparable a versão genérica, ou IComparable<T>. IComparable declara o CompareTo método, que retorna um número inteiro que especifica um menor que igual ou maior que o Relação entre dois objetos do mesmo tipo. IComparable pode ser usado sistema autônomo base para um algoritmo de classificar. Embora usando um método de comparação de delegado sistema autônomo a base de um algoritmo de classificar seria válida, não é ideal.Como a capacidade de comparar pertence à classe e o algoritmo de comparação não é alterado em time de execução, uma interface de método único é ideal.

Consulte também

Conceitos

Guia de Programação C#

Referência

Eventos (Guia de programação do C#)

Métodos (Guia de programação do C#)

Interfaces (guia de programação C#)