En donde tanto los objetos hojas como los objetos compositores se ajustan a una interfaz común. Esta jerarquía esta dominada por relaciones absolutas y se puede visualizar como un árbol. El poder del patrón composite reside en el Client que maneja solo una interfaz Component, la abstracción común entre los tipos del árbol de elementos y el desconocimiento a los cambios en la estructura subyacente. El Client no siempre esta consiente de la estructura jerárquica existente. Mientras tanto, la responsabilidad del Composite es construir un objeto por medio de sus componentes hijos descendiendo en sus jerarquias hasta llegar a las leaf (hojas).

Participantes:

  • Client: Envía un mensaje a la cabeza del componente.
  • Component: Declara la interfaz que los demás partes del árbol deben respetar.
  • Leaf: Clase Concreta que no tiene hijas.
  • Composite Clase concreta que esta compuesta de otros componentes.

Uso del patrón en PHP

Algunas notas del codigo anterior

  • El uso de la operación remove() no es necesario generalmente en una implementación en PHP debido al objetivo del lenguaje es servir elementos listo para su uso, no tiene sentido que el programador agregue elementos y luego los remueva a menos que sea una orden del usuario.
  • La única operación realmente necesaria es la de agregar elementos al arbol por medio del metodo add().
  • Podemos encapsular los mecanismo de construcción del arbol utilizando un patrón Simple Factory