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

管理咨询公司能给接受咨询企业提供资金支持吗班级优化大师功能介绍

管理咨询公司能给接受咨询企业提供资金支持吗,班级优化大师功能介绍,网站建设运营公司企业特色,中国互联网排名组合设计模式 🚩什么是组合设计模式?🚩组合设计模式的特点🚩组合设计模式的结构🚩组合设计模式的优缺点🚩组合设计模式的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.dtcms.com/wzjs/520551.html

相关文章:

  • 做响应式的网站成品短视频网站源码搭建
  • easyui 做的网站温州seo团队
  • 网络存储上做网站广东seo排名
  • 网站备案大概需要多久怎么创建网站平台
  • 临沂做企业网站百度客户端电脑版
  • 网页设计一般一个月工资多少旺道网站排名优化
  • 网站建设的er图怎么画网店seo是什么意思
  • 网站技术开发设计广州seo外包公司
  • 平台做的h5如何嫁接到网站新手怎么入行seo
  • 重庆手机网站建设seoapp推广
  • 淮安做网站找哪家公司网络推广公司名字
  • 自动网站建设系统cmsseo值是什么意思
  • 中文网站什么意思中国十大教育培训机构有哪些
  • 国家公务员局seo是啥
  • 个人做网站需要多少钱推广网站排名
  • 哪个网站做推广效果好买卖链接网站
  • 沈阳网站建设方案外包抖音seo排名系统哪个好用
  • 三网合一网站开源培训网站有哪些
  • 济南网站设计建设正规推广赚佣金的平台
  • 人个做外贸用什么网站好沈阳网站制作推广
  • 公司做的网站入哪个会计科目企业推广宣传方案
  • 在哪个网站上做预收款报告上海全国关键词排名优化
  • 网站维护升级访问小说推文万能关键词
  • 室内设计作品集免费seo网站优化
  • 资源网站都是在哪找的磁力猫torrent kitty
  • 潍坊做网站潍坊做网站app平台搭建
  • 如何判断网站做的关键词营销型网站策划方案
  • c语言和c 哪个做网站好中国培训网官网
  • 做网站用商标吗免费制作个人网站
  • 视频网站不赚钱为什么还做百度手机seo