Java 的组合模式(Composite Pattern)属于结构型设计模式,核心思想是:
把“单个对象”和“对象组合”一视同仁,用统一的方式处理。
下面我用入门级思路 + 生活例子 + 代码示例带你快速理解。
✅ 常见例子:
让叶子节点和组合节点实现同一个接口,客户端统一调用。
| 角色 | 作用 |
|---|---|
| 抽象组件(Component) | 定义统一接口 |
| 叶子节点(Leaf) | 单个对象 |
| 组合节点(Composite) | 包含子节点 |
| 客户端(Client) | 使用统一接口 |
public interface Node {
void show();
}
public class File implements Node {
private String name;
public File(String name) {
this.name = name;
}
@Override
public void show() {
System.out.println("文件:" + name);
}
}
import java.util.ArrayList;
import java.util.List;
public class Folder implements Node {
private String name;
private List<Node> children = new ArrayList<>();
public Folder(String name) {
this.name = name;
}
public void add(Node node) {
children.add(node);
}
@Override
public void show() {
System.out.println("文件夹:" + name);
for (Node node : children) {
node.show();
}
}
}
public class Client {
public static void main(String[] args) {
File f1 = new File("a.txt");
File f2 = new File("b.txt");
Folder folder = new Folder("工作目录");
folder.add(f1);
folder.add(f2);
folder.show();
}
}
文件夹:工作目录
文件:a.txt
文件:b.txt
✅ 客户端不需要关心是文件还是文件夹
add/removeadd/remove✅ 用组合模式,如果你:
if (是文件夹) else (是文件)✅ 入门顺序:
✅ 快速记忆一句话:
组合模式 = 树结构 + 统一接口
如果你愿意,我可以:
你想从哪一步继续?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。