Patrones Estructurales
Cómo ensamblar clases y objetos en estructuras más grandes sin perder flexibilidad: las señales de que el problema entra en esta categoría, y los siete patrones que la componen.
2 min. de lectura
Los patrones estructurales resuelven cómo ensamblar clases y objetos en estructuras más grandes, manteniendo esas estructuras flexibles y eficientes aunque las piezas individuales cambien.
Señales de que el problema entra en esta categoría:
- Necesitás que dos interfaces incompatibles trabajen juntas sin modificar ninguna de las dos.
- Una abstracción y su implementación están mezcladas en la misma jerarquía de clases, y cambiar una obliga a tocar la otra.
- Necesitás tratar de forma uniforme a un objeto individual y a una composición de esos objetos (por ejemplo, un archivo y una carpeta que contiene archivos).
- Necesitás sumarle responsabilidades a un objeto puntual sin generar una explosión de subclases para cada combinación posible.
- Un subsistema tiene tantas piezas y dependencias internas que el código que lo usa se vuelve difícil de seguir.
- Tenés una enorme cantidad de objetos muy parecidos entre sí, y eso está consumiendo memoria de más.
- Necesitás controlar o interceptar el acceso a un objeto sin que quien lo usa lo note.
Los siete patrones de esta categoría:
- Adapter — hace que dos interfaces incompatibles puedan trabajar juntas.
- Bridge — separa una abstracción de su implementación para que ambas puedan evolucionar por separado.
- Composite — compone objetos en estructuras de árbol y los trata de forma uniforme, sean hojas o composiciones.
- Decorator — agrega responsabilidades a un objeto dinámicamente, envolviéndolo en otro objeto compatible.
- Facade — expone una interfaz simple sobre un subsistema complejo.
- Flyweight — comparte el estado común entre muchos objetos similares para ahorrar memoria.
- Proxy — coloca un sustituto delante de un objeto para controlar el acceso a él.
