学习 Java 组合模式(Composite Pattern) 可以从「概念 → 结构 → 代码实现 → 应用场景 → 练习」这条路线来走。下面我给你一个系统、易懂的学习路径。
组合模式是一种 结构型设计模式,用于:
将对象组合成树形结构,以表示“部分-整体”的层次关系,并且让用户对单个对象和组合对象的使用具有一致性。
定义所有对象的通用行为(add / remove / operation)
public abstract class Component {
public abstract void operation();
}
没有子节点
public class Leaf extends Component {
@Override
public void operation() {
System.out.println("叶子节点");
}
}
包含子组件,形成树结构
import java.util.ArrayList;
import java.util.List;
public class Composite extends Component {
private List<Component> children = new ArrayList<>();
public void add(Component c) {
children.add(c);
}
public void remove(Component c) {
children.remove(c);
}
@Override
public void operation() {
for (Component c : children) {
c.operation();
}
}
}
统一操作
public class Client {
public static void main(String[] args) {
Composite root = new Composite();
root.add(new Leaf());
root.add(new Leaf());
Composite branch = new Composite();
branch.add(new Leaf());
root.add(branch);
root.operation();
}
}
public void add(Component c) {
throw new UnsupportedOperationException();
}
你会在这些地方经常看到组合模式:
✅ 文件系统(文件夹 + 文件)
✅ 菜单系统(菜单 + 菜单项)
✅ UI 组件树(容器 + 控件)
✅ 组织架构(部门 + 员工)
java.awt.Componentjavax.swing.JComponent用组合模式实现一个「公司组织架构」:
❌ 把组合模式当成“继承树”
❌ 在叶子中写无意义的 add 方法
❌ 用组合模式处理非层次结构
如果你愿意,我可以:
你想从哪一步继续?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。