Está en la página 1de 7

Contenido

1. Fundamentacion Teorica...............................................................................3
1.1. Patron Composite....................................................................................3
1.2. Objetivo del Patron de diseño Composite...............................................3
1.3. Aplicabilidad............................................................................................3
2. Estructura Generica.......................................................................................3
2.1. Diagrama General...................................................................................3
2.2. Participantes............................................................................................4
3. Ventajas y Desventajas..................................................................................5
3.1. Ventajas...................................................................................................5
3.2. Desventajas.............................................................................................5
4. Ejemplo: Mensajes y Replies de un Foro......................................................5
4.1. Descripcion..............................................................................................5
4.2. Diagrama de clases dinamico.................................................................5
4.3. Código.....................................................................................................6
4.4. Output......................................................................................................7
5. Bibliografía.....................................................................................................8
1. Fundamentacion Teorica
1.1. Patron Composite
Este patrón Composite en español “Compuesto”, pertenece a la
familia de los “patrones de diseños estructurales”, este patrón sirve
para construir objetos complejos a partir de otros más simples y
similares entre sí, creando una composición recursiva una estructura
de árbol.

1.2. Objetivo del Patron de diseño Composite


Es ofrecer un diseño de una composición de objetos de
profundidad variable.
Combina objetos en estructuras de árbol para representar
jerarquías de parte-todo.

1.3. Aplicabilidad
Se Aplica cuando:
 El usuario ignora la diferencia entre composiciones de objetos
y objetos individuales.
 Si se detecta que se están utilizando varios objetos de la
misma manera, y con frecuencia tienen código casi idéntico
para manejarlos.

2. Estructura Generica

2.1. Diagrama General

2
2.2. Participantes
Los participantes del patron son los siguientes:

 Componente.- Es la clase abstracta que contiene la interfaz de


los objetos de la composición, implementa los métodos comunes
e introduce la firma de los métodos que gestionan la composición
agregando o suprimiendo componentes.
 Hoja.- Es la clase concreta que describe las hojas de la
composición (una hoja no posee componentes).
 Compuesto.- Es la clase concreta que describe los objetos
compuestos de la jerarquía. Esta clase posee una asociación de
agregación con la clase Componente.
 Cliente.- Es la clase de los objetos que acceden a los objetos de
la composición y que los manipulan

3
3. Ventajas y Desventajas
3.1. Ventajas
 Mejora la realización de código y facilita la refactorización.
 Define jerarquías de clases que consisten en objetos simples y en
composiciones de esos objetos.
 Hace al cliente más simple.

3.2. Desventajas
 Puede afectar el rendimiento del programa por el hecho de que
cualquier operación llamada en un compuesto se transmite a
todos sus hijos.
 Puede hacer nuestro diseño demasiado general.

4. Ejemplo: Mensajes y Replies de un Foro


4.1. Descripcion
Una aplicación en java donde se puede comentar en la consola,
simulando la interacción de un foro normal, mensajes normales y
respuestas a estos mensajes(reply).

4.2. Diagrama de clases dinamico

4
4.3. Código
public abstract class Component {
protected String usr;
protected String msj;

public Component(String usr,String msj) {


this.usr = usr;
this.msj = msj;
}

public abstract void comentar ();


public abstract void addReply (Component component);

// public abstract void deleteReply();

}
import java.util.ArrayList;
import java.util.List;
public class Composite extends Component{

private List<Component> componentes = new


ArrayList<>();

public Composite(String usr,String msj) {


super(usr,msj);
}

@Override
public void comentar() {
for (Component c: componentes){
System.out.print("REPLY TO ");
c.comentar();
}
System.out.println(this.usr +" -> "+this.msj);
}

@Override
public void addReply(Component component) {
componentes.add(component);
}
}
public class Leaf extends Component {
public Leaf(String usr,String msj) {
super(usr,msj);
}

@Override

5
public void addReply(Component component) {
}

@Override
public void comentar() {
System.out.println(this.usr +" -> "+msj);
}
}
public class ReplyForo {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Component leaf = new Leaf("Modric","Hola soy
nuevo por aca");
leaf.comentar();

Component root = new Composite("Pjanic","Buenas


te doy la bienvenida");
root.addReply(leaf);
root.comentar();

Component sproot = new


Composite("Djokovic","Saludos aqui encontraras lo que
buscas");
sproot.addReply(root);
sproot.comentar();

}
}
4.4. Output

6
5. Bibliografía
DEBRAUWER, L. (s.f.). Patrones de diseño en Java.
Madrid, U. C. (2007/08). Tecnicas de Programacion Patron de Diseño
Composite. Recuperado el 5 de Junio de 2017, de
arantxa.ii.uam.es/~eguerra/docencia/0708/09%20Command.pdf

También podría gustarte