Java 中的**组合模式(Composite Pattern)**属于结构型设计模式,核心思想是:将对象组合成树形结构,以表示“部分-整体”的层次关系,并且让用户对单个对象和组合对象的使用具有一致性。
典型如:
根目录
├─ 文件夹A
│ ├─ 文件1
│ └─ 文件2
└─ 文件3
if (是文件夹) ... else (是文件)Component c = new Folder();
c.add(new File());
c.operation(); // 统一调用
例如:
组合模式天然适合递归:
❌ 对象之间没有明显的层次关系
❌ 叶子节点和容器节点行为差异巨大
❌ 类型非常固定,不会扩展
❌ 对性能极度敏感(递归开销)
Component
├─ Button (叶子)
└─ Container (组合)
List、Set 本身不是组合模式interface FileSystemNode {
int getSize();
}
class File implements FileSystemNode { ... }
class Directory implements FileSystemNode {
List<FileSystemNode> children;
}
add/removeadd/remove如果你面对的是“树形结构 + 统一操作”,组合模式就是最合适的选择。
如果你有具体的业务场景(比如菜单、权限、组织架构),我可以直接帮你判断是否该用组合模式,并给出 Java 示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。