赞
踩
import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; /** * 组合模式。 * @author Bright Lee */ public class CompositePattern { public static void main(String[] args) { Component root = new Composite(); Component leaf = new Leaf(); root.add(leaf); root.operation(); } } /** * Component为组合中的所有对象定义一个接口,不管是组合还是叶节点。 */ interface Component { void operation(); void add(Component component); void remove(Component component); List<Component> getChildren(); } /** * 组合。 */ class Composite implements Component { private LinkedHashMap<Component, Component> childrenMap = new LinkedHashMap<Component, Component>(); public void operation() { System.out.println("我是一个Composite,我的子节点是:"); List<Component> children = getChildren(); for (Component child : children) { child.operation(); } } public void add(Component component) { childrenMap.put(component, component); } public void remove(Component component) { childrenMap.remove(component); } public List<Component> getChildren() { List<Component> list = new ArrayList<Component>(childrenMap.values()); return list; } } /** * 叶子节点。 */ class Leaf implements Component { public void operation() { System.out.println("我是一个Leaf。"); } public void add(Component component) { } public void remove(Component component) { } public List<Component> getChildren() { List<Component> list = new ArrayList<Component>(0); return list; } }
运行结果:
我是一个Composite,我的子节点是:
我是一个Leaf。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。