将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性
package study.org;
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
Composite component = new Composite();
Leaf leaf1 = new Leaf();
leaf1.tag = "1";
component.add(leaf1);
Leaf leaf2 = new Leaf();
leaf2.tag = "2";
component.add(leaf2);
Composite component1 = new Composite();
Leaf leaf3 = new Leaf();
leaf3.tag = "3";
component1.add(leaf3);
component.add(component1);
component.operation();
}
}
abstract class Component {
public abstract void add(Component c); // 增加成员
public abstract void remove(Component c); // 删除成员
public abstract Component getChild(int i); // 获取成员
public abstract void operation(); // 业务方法
}
class Leaf extends Component {
String tag;
public void add(Component c) {
// 异常处理或错误提示
}
public void remove(Component c) {
// 异常处理或错误提示
}
public Component getChild(int i) {
// 异常处理或错误提示
return null;
}
public void operation() {
System.out.println(tag);
}
}
class Composite extends Component {
private ArrayList<Component> list = new ArrayList<Component>();
public void add(Component c) {
list.add(c);
}
public void remove(Component c) {
list.remove(c);
}
public Component getChild(int i) {
return (Component)list.get(i);
}
public void operation() {
//容器构件具体业务方法的实现
//递归调用成员构件的业务方法
for(Object obj:list) {
((Component)obj).operation();
}
}
}
网友评论