温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

组合模式在java里怎么写

发布时间:2026-10-26 00:13:38 来源:亿速云 阅读:97 作者:小樊 栏目:编程语言

组合模式(Composite Pattern)属于结构型设计模式,常用于树形结构的场景,比如菜单、文件目录、组织架构等。

核心思想:
让“叶子节点”和“容器节点”实现同一个接口,客户端可以统一对待。


一、组合模式的结构

1️⃣ 组件接口(Component)

定义叶子节点和容器节点的公共行为。

public interface Component {
    void operation();
}

2️⃣ 叶子节点(Leaf)

没有子节点。

public class Leaf implements Component {

    private String name;

    public Leaf(String name) {
        this.name = name;
    }

    @Override
    public void operation() {
        System.out.println("叶子节点:" + name);
    }
}

3️⃣ 容器节点(Composite)

可以包含子节点(也可以是容器或叶子)。

import java.util.ArrayList;
import java.util.List;

public class Composite implements Component {

    private String name;
    private List<Component> children = new ArrayList<>();

    public Composite(String name) {
        this.name = name;
    }

    public void add(Component component) {
        children.add(component);
    }

    public void remove(Component component) {
        children.remove(component);
    }

    @Override
    public void operation() {
        System.out.println("容器节点:" + name);
        for (Component child : children) {
            child.operation();
        }
    }
}

4️⃣ 客户端使用

public class Client {
    public static void main(String[] args) {
        Component leaf1 = new Leaf("文件1");
        Component leaf2 = new Leaf("文件2");

        Composite folder = new Composite("文件夹");
        folder.add(leaf1);
        folder.add(leaf2);

        Composite root = new Composite("根目录");
        root.add(folder);

        root.operation();
    }
}

二、输出结果

容器节点:根目录
容器节点:文件夹
叶子节点:文件1
叶子节点:文件2

三、透明式 vs 安全式(常见变体)

✅ 透明式(上面示例)

  • 叶子也有 add/remove
  • 客户端使用更简单
  • 但叶子实现无意义的方法

✅ 安全式

  • add/remove 只放在 Composite
  • 更安全
  • 客户端需要判断类型

四、典型使用场景

  • 文件系统(文件 / 文件夹)
  • 菜单(菜单项 / 子菜单)
  • 公司组织架构(部门 / 员工)
  • UI 组件树

如果你愿意,我可以:

  • 写一个文件目录的真实示例
  • 写Spring 中的组合模式应用
  • 或画一个UML 结构图说明

你想看哪种?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手