java 组合模式 例子
时间: 2023-05-20 16:02:29 浏览: 61
组合模式是一种结构型设计模式,它允许你将对象组合成树形结构来表示“部分-整体”的层次结构。下面是一个 Java 组合模式的例子:
```java
interface Component {
void operation();
}
class Leaf implements Component {
@Override
public void operation() {
System.out.println("Leaf operation.");
}
}
class Composite implements Component {
private List<Component> children = new ArrayList<>();
public void add(Component component) {
children.add(component);
}
public void remove(Component component) {
children.remove(component);
}
@Override
public void operation() {
System.out.println("Composite operation.");
for (Component component : children) {
component.operation();
}
}
}
public class Client {
public static void main(String[] args) {
Component leaf1 = new Leaf();
Component leaf2 = new Leaf();
Composite composite1 = new Composite();
composite1.add(leaf1);
composite1.add(leaf2);
Component leaf3 = new Leaf();
Composite composite2 = new Composite();
composite2.add(composite1);
composite2.add(leaf3);
composite2.operation();
}
}
```
在这个例子中,`Component` 接口定义了组合模式中的组件,`Leaf` 类表示叶子节点,`Composite` 类表示组合节点。`Composite` 类中包含了一个 `List` 类型的成员变量 `children`,用于存储子节点。`add` 和 `remove` 方法用于添加和删除子节点。`operation` 方法用于执行操作,如果是叶子节点,则执行叶子节点的操作,如果是组合节点,则执行组合节点的操作,并递归执行子节点的操作。
在 `Client` 类中,我们创建了两个叶子节点和一个组合节点,并将叶子节点添加到组合节点中,最后执行了组合节点的操作。输出结果为:
```
Composite operation.
Leaf operation.
Leaf operation.
Leaf operation.
```