Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Design Patterns en PHP
  3. Introducción a los patrones de estructuración
Extrait - Design Patterns en PHP Los 23 patrones de diseño: descripciones y soluciones ilustradas en UML2 y PHP (2ª edición)
Extractos del libro
Design Patterns en PHP Los 23 patrones de diseño: descripciones y soluciones ilustradas en UML2 y PHP (2ª edición) Volver a la página de compra del libro

Introducción a los patrones de estructuración

Presentación

El objetivo de los patrones de diseño de estructuración es facilitar la independencia de la interfaz de un objeto o de un conjunto de objetos respecto de su implementación. En el caso de un conjunto de objetos, se trata también de hacer que esta interfaz sea independiente de la jerarquía de clases y de la composición de los objetos.

Proporcionando interfaces, los patrones de diseño de estructuración encapsulan la composición de objetos, aumentan el nivel de abstracción del sistema de forma similar a como los patrones de diseño de creación encapsulan la creación de objetos.

La encapsulación de la composición no se realiza estructurando el objeto en sí mismo sino transfiriendo esta estructuración a un segundo objeto. Este queda fuertemente ligado al primero. Esta transferencia de estructuración significa que el primer objeto posee la interfaz expuesta a los clientes y administra la relación con el segundo objeto que gestiona la composición y no tiene ninguna interfaz con los clientes externos.

Esta realización ofrece otra mejora que es la flexibilidad en la composición, la cual puede modificarse de manera dinámica. En efecto, es sencillo sustituir un objeto por otro siempre que derive de la misma clase o que implemente la misma interfaz (¿recuerda el principio de sustitución de Liskov...

Composición estática y dinámica

Tomemos el ejemplo de los aspectos de implementación de una clase. Situémonos en un marco en el que podamos tener varias implementaciones posibles. La solución clásica consiste en diferenciarlas a nivel de las subclases. Es el caso de uso de una interfaz en varias clases de implementación, como ilustra el diagrama de clases de la figura 9.1.

Esta solución consiste en realizar una composición estática. En efecto, una vez se ha escogido la clase de implementación de un objeto, no es posible cambiarla.

images/figure91.PNG

Figura 9.1 - Implementación de un objeto mediante un contrato con una interfaz

Como se ha explicado en la sección anterior, otra solución consiste en separar el aspecto de implementación en otro objeto tal y como ilustra la figura 9.2. Las secciones correspondientes a la implementación se gestionan mediante una instancia de la clase ImplementacionConcretaA o mediante una instancia de la clase ImplementacionConcretaB. Esta...