El patrón Composite es un patrón de diseño estructural que permite componer objetos en estructuras de árbol y tratar tanto a los objetos individuales (hojas / leaf) como a los grupos (compuestos / composite) de manera uniforme. La estructura típica es:
Component: interfaz común (define las operaciones).
Leaf: implementación para los objetos simples.
Composite: implementación para los objetos que contienen otros componentes (mantiene una lista de hijos y delega operaciones).
En otras palabras: Se puede trabajar con un solo objeto o con un grupo de objetos usando el mismo código.
Cuándo usarlo
Menús y submenús (HTML, JSON API responses).
Árbol de categorías y subcategorías (e-commerce).
Estructura de carpetas y archivos (file system virtual).
Formularios complejos con campos y grupos de campos (Symfony Form, Filament).
Organigrama de empleados / departamentos.
Renderizado de componentes UI anidados (Livewire, Inertia, Blade components recursivos).
Expresiones matemáticas o queries booleanas compuestas (AND/OR con subexpresiones).