1.从给定的树形问题中找出简单元素和复杂元素,并对他们抽象,然后绘制他们的类图
2.由客户端运用类图中的类组建出一个树形
注意加入结点的顺序和层次,类似于数据结构当中的树形图
优点:缺点:组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码;
更容易在组合体内加入新的对象,客户端不会因为加入了新的对象而更改源代码,满足“开闭原则”;
代码:设计较复杂,客户端需要花更多时间理清类之间的层次关系;
不容易限制容器中的构件;
不容易用继承的方法来增加构件的新功能;
interface Component{
public void display();
public void add(Component c);
public void remove(Component c);
}
class Leaf implements Component{
String name;
Leaf(String name){
this.name=name;
}
public void display() {
System.out.println(name);
}
public void add(Component c) {}
public void remove(Component c) {}
}
class Composite implements Component{
String name;
Composite(String name){
this.name=name;
}
ArrayList list=new ArrayList();
public void display() {
System.out.println(name);
for(int i=0;i



