组合模式

Java设计模式学习总结(10)——结构型模式之组合模式(部分整体模式) 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。介绍意图:将对象组合成树形结... 阅读详情

组合模式

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构

介绍

意图:

  • 将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性

主要解决:

  • 它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦

何时使用:

  • 您想表示对象的部分-整体层次结构(树形结构)
  • 您希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象

如何解决:

  • 树枝和叶子实现统一接口,树枝内部组合该接口

关键代码:

  • 树枝内部组合该接口,并且含有内部属性 List,里面放 Component

应用实例:

  • 在 JAVA AWT 和 SWING 中,对于 Button 和 Checkbox 是树叶,Container 是树枝

优点:

  • 高层模块调用简单

  • 节点自由增加

缺点:

  • 在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则

使用场景:

  • 部分、整体场景,如树形菜单,文件、文件夹的管理

注意事项:

  • 定义时为具体类

实现

我们有一个类 Employee,该类被当作组合模型类。CompositePatternDemo,我们的演示类使用 Employee 类来添加部门层次结构,并打印所有员工
在这里插入图片描述

  1. 创建 Employee 类,该类带有 Employee 对象的列表
    //Employee.java
    import java.util.ArrayList;
    import java.util.List;

    public class Employee {
       private String name;
       private String dept;
       private int salary;
       private List<Employee> subordinates;

       //构造函数
       public Employee(String name,String dept, int sal) {
          this.name = name;
          this.dept = dept;
          this.salary = sal;
          subordinates = new ArrayList<Employee>();
       }

       public void add(Employee e) {
          subordinates.add(e);
       }

       public void remove(Employee e) {
          subordinates.remove(e);
       }

       public List<Employee> getSubordinates(){
         return subordinates;
       }

       public String toString(){
          return ("Employee :[ Name : "+ name
          +", dept : "+ dept + ", salary :"
          + salary+" ]");
       }
    }
  1. 使用 Employee 类来创建和打印员工的层次结构
    //CompositePatternDemo.java
    public class CompositePatternDemo {
       public static void main(String[] args) {
          Employee CEO = new Employee("John","CEO", 30000);

          Employee headSales = new Employee("Robert","Head Sales", 20000);

          Employee headMarketing = new Employee("Michel","Head Marketing", 20000);

          Employee clerk1 = new Employee("Laura","Marketing", 10000);
          Employee clerk2 = new Employee("Bob","Marketing", 10000);

          Employee salesExecutive1 = new Employee("Richard","Sales", 10000);
          Employee salesExecutive2 = new Employee("Rob","Sales", 10000);

          CEO.add(headSales);
          CEO.add(headMarketing);

          headSales.add(salesExecutive1);
          headSales.add(salesExecutive2);

          headMarketing.add(clerk1);
          headMarketing.add(clerk2);

          //打印该组织的所有员工
          System.out.println(CEO);
          for (Employee headEmployee : CEO.getSubordinates()) {
             System.out.println(headEmployee);
             for (Employee employee : headEmployee.getSubordinates()) {
                System.out.println(employee);
             }
          }
       }
    }
C++ 组合模式 组合模式(Composite Pattern)组合多个对象形成树形结构以表示具有“整体-部分”关系的层次结构。 阅读详情

相关推荐

从实验室到生活:构建一份全面的手机相机主观画质评测指南

本文详细介绍了如何从实验室数据转向实际体验,构建全面的手机相机主观画质评测指南。通过基础装备清单、室内外场景实战评测及数据之外的感知艺术,帮助用户发现手机相机在色彩还原、动态范围和夜景模式等方面的真实表现。特别关注主观体验与客观参数的差异,提供实用的评测技巧和报告撰写心法。

weixin_30940783的博客 309

结构型模式——组合模式

概述 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。 我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。 介绍...

ai-exception的博客 343

SpotBugs实战:10大类Bug检测规则详解与代码优化实例(附避坑清单)

本文深入解析SpotBugs在Java开发中的实战应用,详细讲解10大类Bug检测规则与代码优化实例,包括NPE防御、多线程安全、性能优化等关键问题。通过具体代码示例和避坑清单,帮助开发者提升代码质量,有效集成到CI/CD流程中。

weixin_42665255的博客 198

结构型模式--组合模式

1. 定义:组合多个对象形成树形结构以表示具有”整体一部分”关系的层次结构,是一种对象结构型模式2. 结构图   3. 组合模式中包含的角色 a) Component(抽象构件):它可以是接口或抽象类,为叶子构件和容器构件对象声明接口,包含了所有子类共有行为的声明和实现定义了访问及管理它的子构件的方法 b) Leaf(叶子构件):它在组合模式结构中表示叶子节点对象,叶子节点没有子节点,实现了在抽象...

Zach的博客 411

BlenderGis安装碰到问题,ImageIO、无法点击和地图不加载

BlenderGis安装碰到问题,ImageIO、无法点击和地图不加载问题

qq_45176349的博客 4968

安路科技FPSoC开发实战:从芯片特性到边缘计算应用

本文深入解析安路科技FPSoC芯片在边缘计算领域的开发实战,重点介绍SALDRAGON系列芯片的异构计算架构优势,包括RISC-V/ARM处理器与FPGA的协同工作。通过工业控制和智能视觉应用案例,展示硬件加速实现与低功耗设计技巧,帮助开发者高效利用FPSoC进行边缘计算应用开发。

weixin_29248611的博客 378

组合模式(Composite Pattern)要点

1.组合模式有时候又叫做部分-整体模式,是研究树形结构的问题,它可以使客户端将树枝节点(符合元素,有子元素)和叶子节点(没有子元素)一样看待,减化了不同类型节点的差异性和复杂性。2.使得用户对单个对象和组合对象的使用具有一致性。3.两种分类   透明方式   树枝节点和叶子节点都覆写了基类的方法   优点:所有的构件类都有相同的接口,叶子节点对象与树枝节点对象的区别起码在接口层次上消失了,对客户端是透明的。   缺点:不够安全,当叶子节点的方法在客户端调用运行时会出错,这样就要在叶子节点的方法里捕获这类错误

千里之行 始于足下 548

ESP32 WiFi自平衡小车硬件与PID控制实战

自平衡小车是典型的嵌入式实时反馈控制系统,其核心依赖姿态感知(如MPU6050)、电机驱动(如L298N)与闭环控制算法(如PID)的协同。系统通过IMU采集俯仰角,经互补滤波融合处理,再由PID控制器实时计算PWM输出,驱动直流电机产生恢复力矩;WiFi模块(ESP32内置)则提供远程遥控接口,实现AP模式下的Web指令交互。该架构兼具硬实时性(毫秒级采样与响应)与软实时性(HTTP服务),广泛应用于机器人教学、智能小车开发及边缘控制原型验证。本文围绕ESP32平台,详解传感器接口、驱动电路设计、PID抗

weixin_42509513的博客 393

结构型模式(组合模式)

组合模式将对象组合成树形结构,以表示‘部分-整体’的层次结构。 在组合模式,客户端访问独立对象和组合对象(或称对象集合)一样。 独立对象是一个有特定功能的对象,它不引用其他任何其他对象。 组合对象则是一个提供相似功能对象的集合,主要用来管理独立对象,并为客户端提供和独立对象一样的访问方式。 接下来,我们就以目录和文件来举例,利用它们的一个相同的功能“查看大小”来举例。 1 问题 ...

Again yy 462

别再调PID了!用MATLAB/Simulink给四旋翼无人机搭个ADRC控制器(附完整仿真模型)

本文详细介绍了在MATLAB/Simulink环境中为四旋翼无人机搭建ADRC控制器的完整流程,包括核心原理、Simulink建模、参数调试技巧及与PID控制的性能对比。ADRC通过扩张状态观测器(ESO)有效提升无人机在复杂扰动下的控制性能,特别适合四旋翼无人机这类强耦合系统。文章还提供了完整的仿真模型和工程实践问题解决方案。

weixin_26808439的博客 383

基于近邻列表法的团簇识别与冷凝成核分析(Matlab+Ovito)

本文将介绍如何使用Matlab和Ovito软件进行近邻列表法的团簇识别和冷凝成核分析,并提供相应的源代码。Ovito还提供了丰富的可视化功能,如颗粒渲染、团簇着色、团簇大小统计等,方便我们对冷凝成核现象进行可视化分析。通过使用Matlab和Ovito软件,我们可以方便地进行团簇识别和冷凝成核分析,并对系统中的冷凝行为进行研究和可视化展示。通过识别团簇,我们可以分析系统中的冷凝成核现象,即小团簇的形成和演化过程。通过统计团簇的大小,我们可以得到团簇大小大于等于10的团簇数目,这被认为是冷凝成核的现象。

NoerrorCode的博客 452

组合模式(CompositePattern)

定义 组合多个对象形成树形结构以表示“整体-部分”的关系的层次结构。组合模式对叶子节点和容器节点的处理具有一致性,又称为整体-部分模式。 结构图 角色与理解 组合模式共分为三种角色: Component(抽象构件):叶子构件与容器构件共同继承的父类或者是共同实现的接口,该角色中包含所有子类共有方法的声明和实现,在抽象构件中定义了管理子构件的方法,新增构件、删除构件、获取构件。 Leaf(叶子构件):表示叶子节点,没有子节点,对于继承父类的管理子节点的方法以抛出异常的方式处理。 .

码农架构 3612

借助Gemini 3 Pro高效解决课题申报中的五大核心痛点,亲测有效经验分享

之前给大家分享过关于AI辅助课题申报的相关的内容,涵盖了申报书部分撰写技巧,但没针对性拆解各位同仁在实际申报时遇到的卡壳的地方。比如选题范围拿捏不准,定的太大,根本没法落地完成;定的太小,研究价值则体现不了;写综述时,容易单纯罗列文献,缺乏批判性视角,没办法自然融入自己的判断,找不到研究缺口;研究方法部分,可能担心方法设计不够严谨,别人难以复现.....针对这些申报中的高频痛点,接下来七哥会从五个核心要点出发,借助Gemini 3 Pro高效解决这些痛点。

智能AI让学术科研更容易 702

设计模式——组合模式

1)、组合模式(Composite Pattern):又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。2)、组合模式依据树形结构来组合对象,用来表示部分以及整体层次。3)、这种设计模式属于结构型模式。4)、组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象。5)、优点:组合模式使得客户端代码可以一致地处理单个对象和组合对象,无需关系自己处理的是单个对象,还是组合对象,这简化了客户端代码;

程序猿进阶 1978

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

设计模式组合模式(CompositePattern)

核心模块:抽象构件、树叶构件、容器构件 所有代码请访问:git@code.aliyun.com:289804201/PatternLearn.git 使用场景:树形结构或者希望一致对待整体和部分; 优点:能够很好的分层,模糊整体和部分的差异,容器对象很容易扩展; 缺点:如果复杂对象很复杂,叶子对象将有很多空方法; 注意: 1,核心就是简单对象和复杂对象实

didiao11300的专栏 262

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

设计模式—组合模式

组合模式(Composite Pattern)又称为合成模式、部分-整体模式(Part-Whole),主要用来描述部分与整体的关系。定义:将对象组合成树形结构以表示“部分-整体”的层次结构,使用户对单个对象和组合对象的使用具有一致性。

Florenza的博客 1346

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

您的设计模式——组合模式【Composite Pattern 】

大家在上学的时候应该都学过“数据结构”这门课程吧,还记得其中有一节叫“二叉树”吧,我们上 学那会儿这一章节是必考内容,左子树,右子树,什么先序遍历后序遍历什么,重点就是二叉树的的遍历, 我还记得当时老师就说,考试的时候一定有二叉树的构建和遍历,现在想起来还是觉的老师是正确的,树 状结果在实际项目应用的非常广泛。 咱就先说个最常见的例子,公司的人事管理就是一个典型的树状结构,你想想你公司的结构

613

设计模式-组合模式(Composite)

组合模式(Composite Pattern),也被称为部分-整体模式、合成模式或对象树,是一种结构型设计模式。这种模式将一组具有相似功能的对象视为一个单一的对象,使得客户可以以统一的方式处理单个对象和组合对象。该模式依据树形结构来组合对象,用来表示部分以及整体层次。在特定的应用场景下,如需要表示的功能的结构可以被抽象成树状结构时,就非常适合使用组合模式。例如,在一个模拟的公司架构中,公司被视为一个整体,它下面可以设有行政部门和IT部门,而这些部门又可以有自己的下属部门。

miaoyl的博客 2373

瑞_23种设计模式_组合模式

本文章为瑞_系列专栏之《23种设计模式》的组合模式篇。组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。使用场景:部分、整体场景,如树形菜单,文件、文件夹的管理。

阿瑞——从事Java后端,喜欢研读源码、自研框架、分享经验 1904

设计模式之组合模式:探索对象组合的动态管理与操作技巧

组合模式(Composite Pattern)是一种结构型模式(Structural Pattern),它主要解决的是如何将对象组合成树状以表示“部分-整体”的层次结构,并且可以对整个树进行统一的操作,如遍历、添加、删除等。

犬余的博客 1545

【设计模式】十、组合模式

组合模式

爱喝星冰乐的博客 6791

组合模式介绍

组合模式就是将对象组合成树形结构以表示整个部分的层次结构。组合模式可以让用户统一对待单个对象和对象的组合。组合模式更像是一种数据结构和算法的抽象,其中数据可以表示成树这种数据结构,业务需求可以通过在树上的递归遍历算法来实现。今天我们就来介绍下组合设计模式。

qq_25409421的博客 1535

JAVA设计模式之组合模式详解

组合模式(Composite Pattern) 的定义是:将对象组合成树形结构以表示整个部分的层次结构.组合模式可以让用户统一对待单个对象和对象的组合.比如: windows操作系统中的目录结构,其实就是树形目录结构,通过tree命令实现树形结构展示.在上图中包含了文件夹和文件两类不同元素,其中在文件夹中可以包含文件,还可以继续包含子文件夹.子文件夹中可以放入文件,也可以放入子文件夹. 文件夹形成了一种容器结构(树形结构),递归结构.

励志成为一名优秀的全能型软件开发工程师。 2335

设计模式之组合模式

组合模式(Composite Pattern)也叫合成模式,有时又叫做部分-整体模式(Part-Whole),主要是用来描述部分与整体的关系,其定义如下:我们先来说说组合模式的几个角色:定义参加组合对象的共有方法和属性,可以定义一些默认的行为或属性,比如我们例子中的getInfo就封装到了抽象类中。·Leaf叶子构件叶子对象,其下再也没有其他的分支,也就是遍历的最小单位。树枝对象,它的作用是组合树枝节点和叶子节点形成一个树形结构。高层模块调用简单一棵树形机构中的所有节点都是Component,局部和整体对调

youxiaxiaomage的博客 1330

组合模式_设计模式结构性:组合模式(CompositePattern)

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。结构图角色与理解组...

weixin_39653078的博客 135

组合模式——透明组合模式,安全组合模式

组合模式 概述 叶子节点进行相关的操作。 可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象也可以是叶子对象。 但是由于容器对象和叶子对象在功能上面的区别,使得我们在使用的过程中必须要区分容器对象和叶子对象,但是这样就会给客户带来不必要的麻烦, 作为客户而已,它始终希望能够一致的对待容器对象和叶子对象。 定义: 又名部分整体模式,是用于把一组相似的对象当作一个单一的对象。 组合模式依据树形结构来组合对象,用来表示部分以及整体层次。 这种类型的设计模式

qq_39368007的博客 2948
上一篇: 过滤器模式
下一篇: 装饰器模式
炒栗子不加糖
博客等级 码龄10年 68粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值