当前位置: 首页 > news >正文

组合模式深度解析:构建灵活树形结构的终极指南

一、组合模式:统一处理简单与复杂对象的艺术

1.1 什么是组合模式?

组合模式(Composite Pattern)是一种结构型设计模式,用于将对象组合成树形结构以表示“部分-整体”的层次关系。核心思想是让客户端以统一的方式处理单个对象和组合对象,就像处理文件系统中的文件夹和文件:

  • 叶子节点:文件(无子节点)

  • 组合节点:文件夹(可包含文件或子文件夹)

  • 统一接口:都支持ls命令查看内容

1.2 模式结构UML图

二、文件系统模拟器实战案例 📂

2.1 传统实现的问题

// 硬编码类型判断的客户端代码
public void print(FileSystemNode node) {if (node instanceof File) {System.out.println("文件:" + node.getName());} else if (node instanceof Directory) {Directory dir = (Directory) node;System.out.println("目录:" + dir.getName());for (FileSystemNode child : dir.getChildren()) {print(child); // 递归调用}}
}

痛点:客户端需要区分对象类型,违反开闭原则

2.2 组合模式改造方案

步骤1:定义组件接口

public interface FileSystemComponent {void print(String prefix);default void add(FileSystemComponent component) {throw new UnsupportedOperationException();}default void remove(FileSystemComponent component) {throw new UnsupportedOperationException();}
}

步骤2:实现叶子节点

public class File implements FileSystemComponent {private St

相关文章:

  • 变更需求代价:影响分析
  • OpenCv实战笔记(2)基于opencv和qt对图像进行灰度化 → 降噪 → 边缘检测预处理及显示
  • AUTOSAR_BSW_从入门到精通学习笔记系列_EcuM
  • 仓颉编程语言:面向未来的全场景智能开发新范式
  • LeetCode 102题解 | 二叉树的层序遍历
  • BUUCTF——Fake XML cookbook
  • 13:图像处理—畸变矫正详解
  • 57认知干货:AI机器人产业
  • AIDC智算中心建设:计算力核心技术解析
  • 【深入浅出MySQL】之数据类型介绍
  • ES6入门---第三单元 模块一:类、继承
  • 分享一个Android中文汉字手写输入法并带有形近字联想功能
  • DeepSeek Copilot idea插件推荐
  • Allegro23.1新功能之如何设置高压爬电间距规则操作指导
  • Mamba+Attention+CNN 预测模型:破局长程依赖的计算机视觉新范式
  • ActiveMQ 与其他 MQ 的对比分析:Kafka/RocketMQ 的选型参考(二)
  • 【JLINK调试器】适配【大华HC32F4A0芯片】的完整解决方案
  • 数据结构--树状数组
  • opencv的contours
  • ABC404G 题解
  • 在海拔3980米驻守:“全国先进工作者”刘鹏与洛戈梁子警务站的9年
  • 印度扩大对巴措施:封锁巴基斯坦名人账号、热门影像平台
  • 视频公开课上线之后,北大成为多少人未曾谋面的母校?
  • 消息人士称以色列政府初步同意扩大对加沙军事行动
  • 徐徕任上海浦东新区副区长
  • 上海“模速空间”:将形成人工智能“北斗七星”和群星态势