组合模式又称合成模式,用来描述部分与整体之间的关系
组合模式的定义: 将对象组合成树形结构以表示“部分-整体”的层次机构,使得用户对单个对象和组合对象的使用具有一致性。
组合模式IDE三个角色:
抽象构件角色
该对象既可以是接口,也可以是抽象类
abstract class Component {
private String name;
private String content;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public void operation() {
System.out.println("name: " + name + " --- Content: " + content);
}
}
树枝构件角色
public class Composite extends Component {
private List<Component> list = new ArrayList<>();
public void addNode(Component component) {
list.add(component);
}
public void removeNode(Component component) {
list.remove(component);
}
public Component getChild(int i) {
return list.get(i);
}
public void operation() {
System.out.println("The Branch has " + list.size() + " Childs");
super.operation();
for(Component i : list) {
i.operation();
}
}
}
叶子构件角色
public class Leaf extends Component {
public void operation() {
System.out.println("Show Leaf Node Details");
super.operation();
}
}
组合模式的优点:
组合模式的缺点:
组合模式的使用场景: