透明组合模式的JAVA代码
时间: 2023-07-03 12:05:36 浏览: 83
透明组合模式是一种设计模式,它允许我们将对象组合成树形结构,以表示“部分-整体”的层次结构,同时可以对单个对象和组合对象使用相同的接口。下面是一个简单的Java代码示例,演示如何实现透明组合模式:
```java
public interface Component {
void operation();
void add(Component component);
void remove(Component component);
Component getChild(int index);
}
public class Leaf implements Component {
private String name;
public Leaf(String name) {
this.name = name;
}
public void operation() {
System.out.println(name + " is being operated.");
}
public void add(Component component) {
// do nothing, because leaf can not add any components
}
public void remove(Component component) {
// do nothing, because leaf can not remove any components
}
public Component getChild(int index) {
// return null, because leaf do not have any child components
return null;
}
}
public class Composite implements Component {
private List<Component> children = new ArrayList<Component>();
public void operation() {
for (Component child : children) {
child.operation();
}
}
public void add(Component component) {
children.add(component);
}
public void remove(Component component) {
children.remove(component);
}
public Component getChild(int index) {
return children.get(index);
}
}
// 使用示例
public class Client {
public static void main(String[] args) {
// 创建一个根组件
Composite root = new Composite();
// 创建两个子组件
Composite branch1 = new Composite();
Composite branch2 = new Composite();
// 创建两个叶子节点
Leaf leaf1 = new Leaf("leaf1");
Leaf leaf2 = new Leaf("leaf2");
// 将叶子节点添加到第一个子组件中
branch1.add(leaf1);
branch1.add(leaf2);
// 将第一个子组件添加到根组件中
root.add(branch1);
// 将第二个子组件添加到根组件中
root.add(branch2);
// 对根组件进行操作
root.operation(); // 输出:leaf1 is being operated. leaf2 is being operated.
}
}
```
在上面的示例中,我们定义了一个Component接口,它定义了组合对象和叶子对象的共同行为。Leaf类是叶子对象,它实现了Component接口。Composite类是组合对象,它也实现了Component接口,并包含了一个List<Component>类型的children成员变量,用于保存子组件。在使用示例中,我们创建了一个根组件和两个子组件,将叶子节点添加到第一个子组件中,将子组件添加到根组件中,然后对根组件进行操作,输出了叶子节点的操作信息。
阅读全文