Patrón Composite
¿Qué es el Patrón Composite?
El Composite es un patrón de diseño estructural que permite tratar objetos individuales y compuestos de manera uniforme. Es útil para representar estructuras de jerarquías como árboles y para realizar operaciones en todo un grupo de objetos de manera uniforme.
Código de Ejemplo en JavaScript
class Component {
add(component) {
throw new Error("Este método debe ser implementado por subclases.");
}
remove(component) {
throw new Error("Este método debe ser implementado por subclases.");
}
display(indent) {
throw new Error("Este método debe ser implementado por subclases.");
}
}
class Leaf extends Component {
constructor(name) {
super();
this.name = name;
}
display(indent = 0) {
console.log(`${' '.repeat(indent)}- ${this.name}`);
}
}
class Composite extends Component {
constructor(name) {
super();
this.name = name;
this.children = [];
}
add(component) {
this.children.push(component);
}
remove(component) {
this.children = this.children.filter(child => child !== component);
}
display(indent = 0) {
console.log(`${' '.repeat(indent)}+ ${this.name}`);
this.children.forEach(child => child.display(indent + 2));
}
}
// Uso del Patrón Composite
const root = new Composite("Raíz");
const branch1 = new Composite("Rama 1");
const branch2 = new Composite("Rama 2");
const leaf1 = new Leaf("Hoja 1");
const leaf2 = new Leaf("Hoja 2");
const leaf3 = new Leaf("Hoja 3");
branch1.add(leaf1);
branch1.add(leaf2);
branch2.add(leaf3);
root.add(branch1);
root.add(branch2);
root.display();
Casos de Uso
- Representar jerarquías como sistemas de archivos con carpetas y archivos.
- Trabajar con estructuras de árbol en aplicaciones gráficas o de datos.
- Realizar operaciones sobre un conjunto de objetos de manera uniforme.
Patrones Relacionados
- Decorator: Agrega responsabilidades dinámicamente, mientras que Composite organiza jerarquías.
- Iterator: Proporciona una manera de recorrer estructuras jerárquicas como Composite.
- Flyweight: Optimiza estructuras que contienen muchos objetos similares.