Interfaz (patrón de diseño)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 1 de julio de 2018; las comprobaciones requieren 2 ediciones .
Interfaz
Interfaz
Descrito en Patrones de diseño No

La interfaz ( eng.  interfaz ) es un patrón de diseño básico , que es un método general para estructurar programas de computadora con el fin de hacerlos más fáciles de entender. En general, una interfaz  es una clase que proporciona una forma simple o más específica del programa para que el programador acceda a otras clases.

Una interfaz puede contener un conjunto de objetos y proporcionar una funcionalidad simple y de alto nivel para el programador (p. ej ., Patrón de fachada ); puede proporcionar una forma más limpia o más específica de usar clases complejas (" clase contenedora "); se puede usar como " pegamento " entre dos API diferentes ( Adaptador de patrones ); y para muchos otros propósitos.

Otros tipos de patrones de interfaz son: patrón de delegación , patrón de enlace y patrón de puente .

Ejemplos

C++

A diferencia de Java, donde las interfaces son comunes, este patrón no se usa con frecuencia en C++. Sin embargo, a veces puede ayudar a reducir las dependencias. Para las bibliotecas que usan clases contenedoras para ocultar detalles de implementación internos, el patrón de "interfaz" puede mejorar la legibilidad del código.

Dado que la clase Facade es una interfaz de biblioteca, su archivo h debe estar disponible para el usuario de la biblioteca. Por lo tanto, debe colocarse en el directorio de inclusión de la biblioteca. Pero esta clase Fachada probablemente necesite algunas propiedades de otras clases en la biblioteca. Por lo tanto, su archivo h debe incluir archivos h de otras clases. Esto significa que estos archivos también deben estar disponibles, por lo que también deben colocarse en el directorio de inclusión de la biblioteca. Y esto viola la estrategia de definir solo una interfaz de biblioteca en el directorio de inclusión. Esta dificultad se puede resolver utilizando el patrón de interfaz.

Para implementar una interfaz para una clase , Adebe implementar una clase A_Interfaceque defina los métodos públicos de la clase Acomo funciones abstractas. La clase Adebe ser heredada del A_Interface. ¡No olvide declarar el destructor A_Interface como virtual!

En este caso, el archivo de encabezado (archivo .h) de la clase Ase puede ubicar en los directorios de origen de la biblioteca, mientras que el archivo de encabezado de la clase A_Interfacepermanecerá en el directorio de inclusión.

Dado que la clase de interfaz es abstracta y la clase que implementa la interfaz no se conoce desde fuera de la biblioteca, Ase requiere una fábrica para crear objetos de clase. Tiene sentido crear un método de clase A_Interfaceque funcione como un método de fábrica.

Véase también

Literatura