设计模式:组合模式(Composite Pattern)
2026/9/17 7:26:14 网站建设 项目流程
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。

青蛙客服系统:https://download.csdn.net/download/look4liming/93326820

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询