给一个 java 组合模式 代码例子
时间: 2023-05-21 13:02:00 浏览: 135
当然可以,以下是一个简单的 Java 组合模式代码例子:
```
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 Leaf extends Component {
public Leaf(String name) {
super(name);
}
public void add(Component component) {
System.out.println("Cannot add to a leaf");
}
public void remove(Component component) {
System.out.println("Cannot remove from a leaf");
}
public void display(int depth) {
System.out.println("-".repeat(depth) + name);
}
}
public class Composite extends Component {
private List<Component> children = new ArrayList<>();
public Composite(String name) {
super(name);
}
public void add(Component component) {
children.add(component);
}
public void remove(Component component) {
children.remove(component);
}
public void display(int depth) {
System.out.println("-".repeat(depth) + name);
for (Component component : children) {
component.display(depth + 2);
}
}
}
```
这个例子中,`Component` 是组合模式中的抽象类,`Leaf` 和 `Composite` 是具体的实现类。`Leaf` 表示叶子节点,`Composite` 表示组合节点。`Composite` 中包含了一个 `List`,用于存储它的子节点。`add` 和 `remove` 方法用于添加和删除子节点,`display` 方法用于展示节点的层级结构。
阅读全文