Patrón de diseño Composite

Se clasifica como patrón de diseño estructural y compone objetos bajo una estructura de árbol para simbolizar jerarquías de PARTE-TODO, de esta forma permite que los clientes traten de manera uniforme a los objetos individuales y sus compuestos.


 Su principal característica es que construye objetos complejos a partir de otros más simples y similares, gracias a la composición recursiva y su estructura en forma de árbol como se muestra en la Figura 1.
Figura 1.


Otra característica es que tiene una interfaz común para todos los objetos, con lo cual se les da el mismo tratamiento.

 Se puede aplicar procedimientos al total o a una de sus partes en la estructura de árbol como su fueran un nodo dada su organización jerárquica.

Elementos del patrón

Component:
  • ·         Declara la interfaz para os objetos de la composición.
  • ·         Sirve como interfaz de acceso y manipulación de los hijos con implementación de algunos comportamientos por defecto o comunes.
Client:
  • ·         Manipula objetos a través del “Component”.
Composite:
  • ·         Define el comportamiento de los componentes compuestos.
  • ·         Almacena los hijos
  • ·         Implementa las operaciones de manejo del componente
Leaf:
  • ·         Define comportamientos para objetos primitivos del “Component”. 
Como ejemplo podemos citar un editor gráfico el cual puede construir formas complejas a partir de componentes simples como círculos, cuadrados o triángulos. Con lo cual el usuario puede agrupar componentes para formar otros más complejos y grandes.

Para este patrón de diseño de debe tener en cuenta que el código que usan las clases debe tratar de forma diferente a sus objetos primitivos o básicos así como a sus contenedores, aunque el mismo diseño describe cómo usar la composición recursiva para que los clientes no tengan que hacer esta distinción.

La clave del patrón COMPOSITE radica en que tiene una clase abstracta que representa tanto a sus clases primitivas como a sus contenedores, para el ejemplo de un editor gráfico, la clase GRAFICO declara operaciones como dibujar que son específicas de objetos GRAFICO, pero también declara operaciones que comparte con todos los objetos compuestos, como operaciones para acceder a sus hijos (ramas) con el objetivo de gestionarlos.

Las subclase CIRCULO, CUADRADO y TRIANGULO Figura 2, definen  objetos primitivos, estas clases a su vez implementan GRAFICO para dibujar círculos, cuadrados y triángulos.  

Figura 2.

Comentarios

Entradas populares de este blog

INSTALAR Y CONFIGURAR CODEIGNITER SOBRE XAMPP

FUNCION AUTO-MDIX EN ARDUINO UNO

GLOSARIO WEB SERVICE