Cho phép nói rằng tôi có một composite thiết lập như sau:Tôi nên tiếp cận bao bọc mẫu Composite vào mẫu Builder như thế nào?
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
}
Bây giờ, làm thế nào tôi sẽ đi về gói này composite thành một mô hình Builder, vì vậy mà tôi có thể đơn giản hóa mã khách hàng bằng cách cho phép nó không quan tâm (hoặc chăm sóc ít hơn) về sự phức tạp của cách liên kết trẻ với Composite của chúng tôi?
Cám ơn một câu trả lời nhanh, nhưng bí quyết Animal composit ở đây? Có lẽ tôi nên thuật lại câu hỏi: Có cấu trúc tương tự [this] (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) Làm thế nào tôi sẽ quấn nó xung quanh với một mô hình xây dựng để mã khách hàng để tạo ra các yếu tố Composite sẽ đơn giản và/hoặc phù hợp hơn với một số hình thức kịch bản? –
BodyPart là thành phần và Monkey là một hỗn hợp. Ví dụ này là bằng phẳng nhưng nếu bạn đã làm một cây, như ngón tay trên một bàn tay trên một cánh tay sau đó sẽ có lá. – eabraham
Vâng, đó là những gì tôi đã có trong đầu của tôi trước khi hỏi và những gì cuối cùng làm cho tôi đặt câu hỏi. Trong khi điều này có hiệu quả, nó dường như chỉ làm phức tạp mã khách hàng (hoặc hạn chế tính linh hoạt của nó) và có câu hỏi liệu tôi có cần tạo thành phần của các nhà xây dựng để làm cho toàn bộ linh hoạt không, ví dụ như một người xây dựng các bộ phận cơ thể nhỏ hơn, người xây dựng để tạo chân, và sau đó một người xây dựng sẽ dựa vào những người xây dựng cấp thấp hơn để làm cho toàn bộ động vật? Vì vậy, tôi nghĩ rằng điều này sẽ chỉ gây ra một sự bùng nổ của các lớp học để giữ cho toàn bộ điều hơi linh hoạt. –