什么组合设计模式?为什么要使用组合设计模式?

组合模式:组合(Composite)模式是一种对象的行为模式。将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式属于结构型设计模式。组合模式使得用户对单个对象和组合对象的使用具有一致性。

组合模式最大的特性就是使用树形结构,这里是把结构封装层树形结构,客户端无需关注内部实现,只需要更加节点获取树形里面指定的节点数据、定义树节点方法进行层级管理,我们常见的应用场景:

树形菜单,文件目录,磁盘分类,组织结构 这种类型都可以是组合模式的应用场景。

这里我们就采用树形结构的方式来讲解,树形结构的最大特点就是部分和整体就是组合设计模式,举个例子我的计算机和我的D盘和C盘就是属于部分,而计算机就是一个整体。

计算机:

D盘:

计算机属于整体,D盘C盘属于计算机的部分,D盘下面的文件大小,文件类型,日期,属性就属于D盘的部分。

话不多说直接上代码:

代码类图&

java设计模式之组合设计模式相关推荐

  1. GOF设计模式之组合设计模式(结构型模式) ✨ 每日积累

    组合模式是什么 组合模式(Composite Pattern),又叫部分整体模式,作为结构型模式,组合模式是用于把一组相似的对象当作一个单一的对象.组合多个对象形成树形结构来表示"整体-部分 ...

  2. 12【组合设计模式】

    文章目录 十二.组合设计模式 12.1 组合设计模式简介 12.1.1 组合设计模式概述 12.1.2 组合设计模式中的角色 12.2 组合设计模式的实现 12.2.1 透明组合模式 12.2.2 安 ...

  3. java设计模式之组合模式(树形层级)

    java设计模式之组合模式 学习难度:★★★☆☆,使用频率:★★★★☆]  树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式来 ...

  4. Java设计模式之组合模式详解

    文章目录 详解Java设计模式之组合模式 案例引入 组合模式 定义 模式类图结构 相关角色 典型代码 案例分析 类图设计 实例代码 结果分析 JavaJDK中的组合模式 透明组合模式 安全组合模式 组 ...

  5. Java设计模式之组合模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  6. Java之美之设计模式

    一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接 ...

  7. 1、【设计模式】组合模式

    java设计模式之组合模式 [学习难度:★★★☆☆,使用频率:★★★★☆]  树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式 ...

  8. Java状态和策略设计模式之间的差异

    为了在Core Java应用程序中正确使用状态和策略设计模式,对于Java开发人员清楚地了解它们之间的区别很重要. 尽管状态和策略设计模式的结构相似,并且都基于开放式封闭设计原则,从SOLID设计原则 ...

  9. Java中的策略设计模式-示例教程

    策略模式是行为设计模式之一 . 当我们对一个特定任务有多种算法,并且客户端决定在运行时使用的实际实现时,将使用策略模式. 策略模式也称为策略模式 . 我们定义了多种算法,并让客户端应用程序将算法用作参 ...

  10. 【Java】Java与GoF-23种设计模式

    文章目录 设计模式概述 GoF-23种设计模式 设计模式的分类 设计模式的原则 设计模式在JDK的部分体现 Singleton Factory Abstract factory Adapter Com ...

最新文章

  1. 浮点类型和布尔类型(Java)
  2. neo4j安装和启动
  3. Servlet的运行方式
  4. GIt 从入门到放弃
  5. python教材知乎_python大学里用哪本教材比较好?
  6. leetcode python3 简单题122. Best Time to Buy and Sell Stock II
  7. office提示 Excel 4.0函数以定义名称保存
  8. sql日期和时间函数
  9. matlab residue
  10. oralce常见异常——ORA-12514: TNS:listener does not currently know of service requested in connect descript
  11. 通用人工智能最新突破!一个Transformer搞定一切
  12. php多线程采集,php浏览器模拟:用于多线程处理的curl_multi一族函数使用介绍
  13. oracle创建列默认值,表列添加默认值的方法
  14. SQL——数据定义DDL
  15. k8s pod基础概念
  16. 博弈之威佐夫博弈详解
  17. 【广告投放】名称概念
  18. 人脸识别门禁方案汇总和应用分析,解析指标背后的含义
  19. IDL中提供的[source]属性,是为了让实现类宣扬它支持哪几个对外接口注册。
  20. Vue-视频加载(vue-video-player)支持.mp4.m3u8.flv.mov格式

热门文章

  1. Seaborn 绘图中设置字体及大小
  2. 【Ant Design Vue】封装导出Excel文件的功能模块到ele-pro-table
  3. vue+ele 表格 根据表格字段名称显示前端图片文件夹对应图片 没有图片显示单独图片
  4. 使用Hbase Shell和Java API分别进行Hbase的增删改查操作
  5. 配置vscode解决code runner乱码
  6. JS数值类型与字符串类型的内置方法
  7. Axure-RP8 介绍
  8. linux中括号的用法,【shell】Linux shell中括号的用法
  9. 高级前端面试100问(必会)
  10. 2010新财富中国富豪榜1至100名