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

上海市住房城乡建设管理委官方网站/淘宝推广运营

上海市住房城乡建设管理委官方网站,淘宝推广运营,做婚恋交友类网站,微店分销系统组合设计模式 🚩什么是组合设计模式?🚩组合设计模式的特点🚩组合设计模式的结构🚩组合设计模式的优缺点🚩组合设计模式的Java实现🚩代码总结🚩总结 🚩什么是组合设计模式…

组合设计模式

  • 🚩什么是组合设计模式?
  • 🚩组合设计模式的特点
  • 🚩组合设计模式的结构
  • 🚩组合设计模式的优缺点
  • 🚩组合设计模式的Java实现
  • 🚩代码总结
  • 🚩总结

🚩什么是组合设计模式?

组合设计模式(Composite Pattern) 是一种 结构型设计模式,它允许你将对象组合成 树形结构 以表示 部分-整体 的层次结构。组合模式使得客户端可以 统一处理单个对象和组合对象,无需关心它们的具体类型。

使用场景

  • 当需要表示 部分-整体 的层次结构时,例如 文件系统菜单组织结构 等。

  • 当希望客户端能够 统一处理单个对象和组合对象 时。

  • 当需要 递归地处理树形结构 时。

🚩组合设计模式的特点

  • 统一性:组合模式使得客户端可以统一处理单个对象和组合对象。

  • 递归性:组合模式支持递归地处理树形结构。

  • 灵活性:可以动态地添加或删除组合对象中的子对象。

  • 透明性:客户端无需知道处理的是单个对象还是组合对象。

🚩组合设计模式的结构

组合模式主要包含以下部分:

  • Component(抽象组件):定义所有组件的通用接口,包括 叶子节点容器节点

  • Leaf(叶子节点):表示树形结构中的叶子节点,没有子节点,类似于文件。

  • Composite(容器节点):表示树形结构中的容器节点,可以包含子节点,类似于文件夹。

  • Client(客户端):通过 Component 接口操作组合对象。

图例:

在这里插入图片描述

🚩组合设计模式的优缺点

✅ 优点

  • 统一性:客户端可以统一处理单个对象和组合对象。

  • 灵活性:可以动态地添加或删除组合对象中的子对象。

  • 递归性:支持递归地处理树形结构。

  • 透明性:客户端无需知道处理的是单个对象还是组合对象。

❌ 缺点

  • 设计复杂性:组合模式的设计可能较为复杂,尤其是处理递归结构时。

  • 性能问题:在处理深层嵌套的树形结构时,可能会影响性能。

🚩组合设计模式的Java实现

代码地址:GitHub

  • 创建 抽象组件 AbstractFile,定义所有组件的通用接口。
/*** @author hanson.huang* @version V1.0* @ClassName AbstractFile* @Description 抽象组件,定义所有组件的通用接口* @date 2025/3/24 14:49**/
public abstract class AbstractFile {protected String name;public void printName() {System.out.println(name);}public abstract boolean Add(AbstractFile file);public abstract boolean Remove(AbstractFile file);public abstract List<AbstractFile> getChildren();
}
  • 创建 叶子节点 File,表示树形结构中的叶子节点,类比文件系统中的文件。
/*** @author hanson.huang* @version V1.0* @ClassName File* @Description 创建 叶子节点 File,表示树形结构中的叶子节点* @date 2025/3/24 14:50**/
public class File extends AbstractFile {public File(String name) {this.name = name;}@Overridepublic boolean Add(AbstractFile file) {return false;}@Overridepublic boolean Remove(AbstractFile file) {return false;}@Overridepublic List<AbstractFile> getChildren() {return null;}
}
  • 创建 容器节点 Folder,表示树形结构中的容器节点,类比文件系统中的文件夹。
/*** @author hanson.huang* @version V1.0* @ClassName Folder* @Description 创建 容器节点 Folder,表示树形结构中的容器节点* @date 2025/3/24 14:51**/
public class Folder extends AbstractFile {private List<AbstractFile> childrenList = new ArrayList<AbstractFile>();public Folder(String name) {this.name = name;}@Overridepublic boolean Add(AbstractFile file) {return childrenList.add(file);}@Overridepublic boolean Remove(AbstractFile file) {return childrenList.remove(file);}@Overridepublic List<AbstractFile> getChildren() {return childrenList;}
}
  • 测试组合模式
/*** @author hanson.huang* @version V1.0* @ClassName CompositePattern* @Description 测试组合模式* @date 2025/3/24 14:53**/
public class CompositePattern {public static void main(String[] args) {AbstractFile root = new Folder("root");AbstractFile folderA = new Folder("folderA");AbstractFile folderB = new Folder("folderB");AbstractFile  fileC = new File("fileC");AbstractFile  fileD = new File("fileD");AbstractFile  fileE = new File("fileE");root.Add(folderA);root.Add(folderB);root.Add(fileC);folderA.Add(fileD);folderA.Add(fileE);print(root);}public static void print(AbstractFile file) {file.printName();List<AbstractFile> childrenList = file.getChildren();if (childrenList == null) return;for (AbstractFile children : childrenList) {print(children);}}
}

📌 运行结果

在这里插入图片描述

🚩代码总结

  • 抽象组件 AbstractFile 定义所有组件的通用接口。

  • 叶子节点 File 表示树形结构中的叶子节点。

  • 容器节点 Folder 表示树形结构中的容器节点。

  • 客户端 通过递归方式遍历树形结构,并统一处理单个对象和组合对象。

🚩总结

  • 组合设计模式(Composite Pattern) 允许你将对象组合成 树形结构 以表示 部分-整体 的层次结构。

  • 适用于 文件系统菜单组织结构 等需要表示部分-整体层次结构的场景。

  • Java 实现 需要 定义抽象组件叶子节点容器节点,并通过递归方式处理树形结构。

✅ 适用场景:

  • 需要表示 部分-整体 的层次结构时。

  • 希望客户端能够 统一处理单个对象和组合对象 时。

  • 需要 递归地处理树形结构 时。

在这里插入图片描述

http://www.whsansanxincailiao.cn/news/31995354.html

相关文章:

  • 成都旅游网站建设地址/推广渠道
  • 厚街手机网站制作/成免费crm软件有哪些优点
  • 做静态网站/热搜榜排名今日
  • 政府采购网机票/优化搜索关键词
  • 请谁做网站比较放心/免费网站建设哪家好
  • 阿里云网站建设的功能/想要推广页
  • 淮阳城乡建设局网站/网站搜索引擎优化方法
  • 企业网站怎么制作流程/搜狗网站
  • PHP做网站的核心是什么/北京口碑最好的教育机构
  • 网站开发的研究方法/百度一下你就知道百度一下
  • 做网站销售一个星期的计划/阿里云域名注册入口
  • 支付行业的网站怎么做/参考消息网国内新闻
  • 企业免费网站系统下载地址/创意营销
  • 做推广网站的去哪能买到有效资料/陕西百度代理公司
  • 培训网站开发/重庆seo优化公司
  • 一学一做教育视频网站/搜索引擎营销的特点有
  • 做psd模板下载网站/十大接单推广平台
  • 亚洲男女做暖网站/百度销售推广
  • 江西省城乡和住房建设部网站/企业网站seo诊断报告
  • 深圳罗湖做网站58/百度导航下载安装手机导航
  • 呼和浩特企业网站制作/网页设计基础
  • 网站怎么做域名/4001688688人工服务
  • 做外贸用哪些网站/杭州百度推广代理商
  • 自己写的网站怎么发布/站长工具综合查询官网
  • 住房和城乡建设部网站 绿地/cpa推广接单平台
  • 南宁 网站开发/制作自己的网站
  • 网页传奇176/seo可以从哪些方面优化
  • 打赏网站怎么建设/西安网站制作
  • 网站建设从零开始/互联网品牌宣传推广服务公司
  • seo网站推广怎样/1688精品货源网站入口