概念
- 用于树形结构;
- 这种类型的设计模式属于结构型模式;
- 组合模式使得用户对单个对象和组合对象的使用具有一致性。
demo
import java.util.ArrayList;
public class Composite {
public static void main(String[] args) {
Compositez root = new Compositez();
root.common();
Compositez branch = new Compositez();
Leaf leaf = new Leaf();
root.add(branch);
branch.add(leaf);
display(root);
}
private static void display(Compositez root) {
for (Component c : root.getChildren()) {
if (c instanceof Leaf) {
c.common();
} else {
display((Compositez) c);
}
}
}
}
abstract class Component {
public abstract void common();
}
class Compositez extends Component {
private ArrayList<Component> componentArrayList = new ArrayList<Component>();
public void add(Component component) {
this.componentArrayList.add(component);
}
public void remove(Component component) {
this.componentArrayList.remove(component);
}
public ArrayList<Component> getChildren() {
return this.componentArrayList;
}
@Override
public void common() {
System.out.println("branch");
}
}
class Leaf extends Component {
@Override
public void common() {
System.out.println("do something");
}
}