que permite decir que tengo una Compuesto establecido de la siguiente manera:¿Cómo debo enfocar el patrón Compuesto en el patrón de Constructor?
public abstract class Element {
//position, size, etc.
//element methods
//setters/getters
}
public class SimpleElement1 extends Element {
//...
}
public class SimpleElement2 extends Element {
//...
}
public class CompositeElement extends Element {
protected List<Element> childrenElements;
//methods to add/remove/get children
}
Ahora, ¿cómo hago para envolver este Compuesto aparecer como un patrón Constructor, de modo que pueda simplificar el código de cliente al permitir que no le importe (o le importe menos) las complejidades de cómo vincular a los niños a su compuesto?
Gracias por una respuesta rápida, pero cómos compuesta Animal en esta lista? Tal vez debería reformular una pregunta: Tener una estructura similar a [esta] (http://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Composite_UML_class_diagram_%28fixed%29.svg/800px-Composite_UML_class_diagram_%28fixed% 29.svg.png) ¿cómo podría envolverlo con un patrón de generador para que el código del cliente para crear elementos compuestos sea más simple y/o más adecuado para algún tipo de scripting? –
BodyPart es el componente y Monkey es un compuesto. Este ejemplo es plano, pero si hicieras un árbol, como un dedo en una mano en un brazo, entonces habría hojas. – eabraham
Bueno, eso es lo que tenía en mi cabeza antes de preguntar y lo que finalmente me hizo hacer la pregunta. Si bien esto funcionaría, parece que solo está complicando el código del cliente (o limitando su flexibilidad) y existe la pregunta de si necesitaría hacer la composición de los constructores para que todo sea flexible, por ejemplo, un constructor para hacer un brazo de partes del cuerpo más pequeñas, constructor para hacer una pierna, y luego un constructor que dependerá de esos constructores de nivel inferior para hacer animales completos? Entonces creo que esto solo causaría una explosión de clases para mantener todo flexible. –