PATRÓN COMPOSITE
Objetivo:
·
Componer
objetos en estructuras de árbol para representar jerarquías.
·
Manipular
todos los objetos del árbol de manera uniforme.
¿Para qué
sirve?
El patrón
Composite sirve para construir objetos complejos a partir de otros más simples
y similares entre sí, gracias a la composición recursiva y a una estructura en
forma de árbol.
Este útil
patrón permite crear y manejar estructuras de objetos en forma de árbol, en las
que un objeto puede contener a otro(s).
¿Se debe
utilizar Composite cuándo?
·
Se
busca que el cliente puede ignorar la diferencia entre objetos primitivos y
compuestos (para que pueda tratarlos de la misma manera).
·
Se
quiere combinar objetos en estructuras de árbol para representar jerarquías de
parte-todo.
Diagrama UML ¨Patrón Composite¨
- Component: implementa un comportamiento común entre las clases y declara una interface de manipulación a los padres en la estructura recursiva.
- Leaf: representa los objetos “hoja” (no poseen hijos). Define comportamientos para objetos primitivos.
- Composite: define un comportamiento para objetos con hijos. Almacena componentes hijos, implementa operaciones de relación con los hijos.
Consecuencias
- Define jerarquías de clases hechas de objetos primitivos y compuestos.
- Si el código cliente espera un objeto simple, puede recibir también uno compuesto z Simplifica el cliente.
- Objetos simples y compuestos se tratan homogéneamente z Facilita la incorporación de nuevos tipos de componentes z Puede hacer el diseño demasiado general.
- Es complicado restringir el tipo de componentes de un composite.
Ejemplo:
Vamos a realizar un ejemplo de un Banco. Un banco puede tener muchos sectores:
- Gerencia.
- Administrativo.
- RRHH.
- Cajas.
Cada uno de estos sectores tendrá empleados que cobran un sueldo. En nuestro caso utilizaremos el
Composite para calcular la sumatoria de sueldos de la empresa.
En el siguiente link, encontraras la implementación del patrón COMPOSITE aplicado al ejemplo anteriormente planteado.
https://github.com/rafaelnunez/TAcomposite
En el siguiente link, encontraras la implementación del patrón COMPOSITE aplicado al ejemplo anteriormente planteado.
https://github.com/rafaelnunez/TAcomposite
Referencias bibliográficas:
0 comentarios:
Publicar un comentario