Una interfaz pública es el punto lógico en el que interactúan las entidades de software independientes. Las entidades pueden interactuar entre sí dentro de una sola computadora, a través de una red o a través de una variedad de otras topologías . Es importante que las interfaces públicas sean estables y estén diseñadas para admitir cambios, mejoras y obsolescencia futuros para que la interacción continúe.
Diseño
Guia
- Un proyecto debe proporcionar documentos adicionales que describan planes y procedimientos que se pueden utilizar para evaluar el cumplimiento del proyecto.
- Proporcione un documento de diseño de arquitectura .
- Proporcione un documento de estándares de codificación .
- Proporcione un documento de plan de lanzamiento de software.
- Proporcione un documento con un plan para dejar de lado las interfaces obsoletas.
- Crea clases completamente aisladas.
- Aísle las interfaces públicas de las dependencias en tiempo de compilación .
Mejores prácticas
- Presentar conjuntos de conceptos completos y coherentes al usuario.
- Diseñar interfaces para ser tipadas estáticamente.
- Minimice las dependencias de la interfaz con otras interfaces.
- Expresar interfaces en términos de tipos de nivel de aplicación.
- Utilice afirmaciones solo para ayudar al desarrollo y la integración.
Ejemplos de
- Interfaz C ++
- Utilice clases de protocolo para definir interfaces públicas.
- Las características de una clase de protocolo son:
- No contiene ni hereda de clases que contengan datos de miembros, funciones no virtuales o miembros privados (o protegidos) de cualquier tipo.
- Tiene un destructor virtual no en línea definido con una implementación vacía.
- Todas las funciones miembro distintas del destructor, incluidas las funciones heredadas, se declaran puramente virtuales y no se definen.
- Beneficios
- Los beneficios de usar clases de protocolo incluyen:
- Aislar aplicaciones del cliente externo
- Aislar los cambios internos de la interfaz.
- Aislar los cambios en la interfaz pública de los cambios en la implementación de la interfaz
- El aislamiento tiene costos, pero estos tienden a ser superados por las ganancias en interoperabilidad y reutilización.
- Costos :
- Pasando por el puntero de implementación
- Adición de un nivel de indirección por acceso
- Adición del tamaño del puntero de implementación por objeto a los requisitos de memoria
Referencias
- Varias metodologías, como la refactorización , apoyan la determinación de interfaces. La refactorización generalmente se aplica a toda la implementación del software, pero es especialmente útil para limpiar correctamente las interfaces.
- Hay otros enfoques definidos a través de la comunidad de patrones. Puede obtener estas metodologías de la comunidad de patrones en [1] .
- Consulte "Diseño de Java: creación de mejores aplicaciones y applets" para obtener una buena metodología introductoria que también se aplica a la comunidad C / C ++.