Diseño de interfaces
Una interfaz define las firmas para un conjunto de miembros que deben proporcionar los implementadores. Las interfaces no pueden proporcionar los detalles de implementación para los miembros. Por ejemplo, la interfaz ICollection define miembros relacionados con el trabajo con colecciones. Cada clase concreta que implementa la interfaz debe proporcionar los detalles de implementación para estos miembros. Aunque las clases sólo pueden heredar de una única clase, pueden implementar varias interfaces. Las instrucciones siguientes ayudan a garantizar que sus interfaces están correctamente diseñadas.
Defina una interfaz si necesita que un conjunto de tipos que incluya algunos tipos de valor admita cierta funcionalidad común.
Los tipos de valor deben heredar de ValueType. Por esta razón, las clases abstractas no se pueden utilizar para especificar un contrato para los tipos de valor; en su lugar se deben utilizar las interfaces.
Considere la posibilidad de definir una interfaz si necesita admitir su funcionalidad en tipos que ya heredan de algún otro tipo.
Evite utilizar interfaces de marcador (interfaces sin miembros).
Los atributos personalizados proporcionan una manera de marcar un tipo. Para obtener más información sobre los atributos personalizados, vea Escribir atributos personalizados. Se prefieren los atributos personalizados cuando puede diferir la comprobación del atributo hasta que el código esté ejecución. Si su escenario requiere la comprobación en tiempo de compilación, no puede cumplir esta instrucción.
Proporcione al menos un tipo que es una implementación de una interfaz.
Esto ayuda a garantizar que la interfaz está bien diseñada y que se puede implementar sin demasiada dificultad. La clase Int32 proporciona una implementación para la interfaz IComparable.
Proporcione al menos un miembro que consuma cada interfaz definida (por ejemplo, un método que tome la interfaz como un parámetro o una propiedad que tenga el mismo tipo que la interfaz).
Éste es otro mecanismo que ayuda a garantizar que la interfaz está bien diseñada y que se puede utilizar sin demasiada dificultad.
No agregue miembros a una interfaz que se haya distribuido previamente.
Agregar nuevos miembros estropeará el código que implementaba la versión anterior de la interfaz. Éste es una de las razones principales por las que, en general y cuando es posible, es preferible usar clases respecto a las interfaces. Para obtener más información, vea Elegir entre clases e interfaces.
Si la definición distribuida de la interfaz requiere miembros adicionales, puede implementar una nueva interfaz y los miembros adecuados para utilizarla.
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 “las instrucciones de diseño de Framework: Convenciones, frases realizadas y modelos para libro de bibliotecas reutilizables de .NET” de Krzysztof Cwalina y Brad Abrams, publicados por Addison-Wesley, 2005.
Vea también
Conceptos
Elegir entre clases e interfaces
Otros recursos
Instrucciones de diseño de tipos
Instrucciones de diseño para desarrollar bibliotecas de clases