组合模式
一、定义
组合模式(Composite):将对象组合成树形结构以表示’部分-整体‘的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
二、优缺点
优点:组合模式可以让客户端一致的使用组合结构和单个对象。当需求是体现部分与整体层次的结构时,以及希望可以忽略组合对象和单个对象的不同,统一使用组合中的所有对象时,就可以用组合模式。
缺点:创建枝节点和子节点都是使用实现类,违背了依赖倒置原则。
三、示例代码
/*所有实现类的共有接口,用于访问和管理子部件*/
public abstract class Component {
protected String name;
public Component(String name) {
this.name = name;
}
public abstract void add(Component component);
public abstract void remove(Component component);
public abstract void display(int depth);
}
/*枝节点*/
public class Composite extends Component {
private List children = new ArrayList<>();
public Composite(String name) {
super(name);
}
@Override
public void add(Component component) {
children.add(component);
}
@Override
public void remove(Component component) {
children.remove(component);
}
@Override
public void display(int depth) {
StringBuilder stringBuilder=new StringBuilder();
for (int i = 0; i