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.
- · Manipula objetos a través del “Component”.
- · Define el comportamiento de los componentes compuestos.
- · Almacena los hijos
- · Implementa las operaciones de manejo del componente
- · Define comportamientos para objetos primitivos del “Component”.
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
Publicar un comentario