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

设计模式|组合模式(Composite Pattern) 组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构以表示部分-整体的层次结构。这种模式使得客户端能够以统一的方式处理单个对象和组合对象。 阅读详情

组合模式

介绍

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

在这里插入图片描述

代码演示

package com.cyc.design.composite;

import java.util.ArrayList;
import java.util.List;

/**
 * 组合模式
 */

abstract class Node {
    abstract public void p();
}

/**
 * 叶节点
 */
class LeafNode extends Node {

    String content;

    public LeafNode(String content) {
        this.content = content;
    }

    @Override
    public void p() {
        System.out.println(content);
    }
}

/**
 * 枝节点
 */
class BranchNode extends Node {

    //枝节点中不仅包含自己 , 还可以包含页节点
    List<Node> nodes = new ArrayList<>();

    String name;

    public BranchNode(String name) {
        this.name = name;
    }

    @Override
    public void p() {
        System.out.println(name);
    }

    /**
     * 这里将子节点加载进去
     * @param node
     */
    public void add(Node node) {
        nodes.add(node);
    }
}


public class Main {

    public static void main(String[] args) {
        BranchNode root = new BranchNode("root");
        //新建两个枝节点
        BranchNode chapter1 = new BranchNode("chapter1");
        BranchNode chapter2 = new BranchNode("chapter2");
        //新建两个页节点
        Node r1 = new LeafNode("r1");
        Node c11 = new LeafNode("c11");
        Node c12 = new LeafNode("c12");
        //新建一个枝节点,属于枝节点chapter2的子节点
        BranchNode b21 = new BranchNode("section21");
        Node c211 = new LeafNode("c211");
        Node c212 = new LeafNode("c212");

        root.add(chapter1);
        root.add(chapter2);
        root.add(r1);
        chapter1.add(c11);
        chapter1.add(c12);
        chapter2.add(b21);
        b21.add(c211);
        b21.add(c212);
        //调用tree
        tree(root, 0);

    }

    static void tree(Node b, int depth) {
        for (int i = 0; i < depth; i++) {
            System.out.print("--");
        }
        b.p();
        if (b instanceof BranchNode) {
            for (Node node : ((BranchNode) b).nodes) {
                //这里进行递归调用, 打印树装结构
                tree(node, depth + 1);
            }
        }

    }
}


输出结果

在这里插入图片描述

设计模式之组合模式(Composite Pattern)详解 本节主要总结组合模式的定义及使用,并举例说明。 阅读详情

相关推荐

软件测试工程师最常用的Linux系统命令大全(汇总)

cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。

1330

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

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

miaoyl的博客 2372

群晖NAS下docker安装MySql

本文将一步一步讲解如何在群晖NAS的docker中启用一个MySQL容器 , 算是初学者对问题解决的一个记录.

qq_46375248的博客 5976

设计模式第13讲——组合模式(Composite)

组合模式也成为整体部分模式,是一种结构型设计模式。一、什么是组合模式 二、角色组成 三、优缺点 四、应用场景 4.1 生活场景 4.2 java场景 五、代码实现 5.0 UML类图 5.1 Expression-组件(Component)5.2 Number-叶子节点(Leaf)5.3 Operation-组合节点(Composite)5.4 testComposite六、总结

让~学习~成为一种习惯(橡 皮 人の技术博客) 5715

003:大疆智图新手入门:从下载安装到首次建模实战

本文为大疆智图新手提供从下载安装到首次三维建模的完整实战指南。详细介绍了软件安装的硬件要求、试用许可申请流程,并指导用户如何准备航拍数据或使用开源样例进行首次建模。通过分步操作演示与核心参数设置讲解,帮助初学者快速掌握使用大疆智图进行实景三维重建的核心流程与常见问题解决方案。

t8u9v0的博客 699

基于Stigmergy的团队LLM wiki协作机制与FastAPI工程实践

大语言模型驱动的知识管理正在改变个人笔记与团队文档的维护方式,但当多人共同维护一个维基时,如何避免版本覆盖、上下文丢失和幻觉污染成为核心挑战。Stigmergy这一源自生物学的协作机制提供了新思路:通过共享环境中的痕迹(如评论、标记、修订历史)实现异步协作,无需实时沟通或中心协调者。本文将原理落地为可工程化的系统,设计Page、Revision、Trace三大实体,并结合向量索引与LLM审查流程,最终用FastAPI与SQLite搭建一个最小可运行原型。从白蚁筑巢到团队知识库,Stigmergy让每个参与者

weixin_34174322的博客 364

COMPOSITE(组合)模式

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

知行合一 1385

【unity小技巧】委托(Delegate)的基础使用和介绍

在Unity中,委托(Delegate)是一种用于处理方法回调的特殊类型。它允许您将方法作为参数传递给其他方法,并在需要时调用这些方法。委托在游戏开发中非常有用,特别是在事件处理、消息传递和异步操作方面。它提供了一种灵活的方式来注册和触发方法,而无需显式地知道这些方法的实现细节。个人理解:可以把委托理解为一个容器,容器里面放可以放很多函数方法。一调用委托,里面所有的函数方法都会同步被执行。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7234

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

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

ProgramNovice的博客 1195

动手在 SAP BTP Cloud Foundry 开发和部署 SAP UI5 应用的前置条件 - 订阅 SAP Build Work Zone Standard Version

摘要:本文介绍了SAP BTP Cloud Foundry环境中HTML5应用的概念,区分了web应用、HTML5应用和SAP UI5应用的关系。重点说明了在Cloud Foundry环境部署HTML5应用的方法是通过订阅SAP Build Work Zone standard edition服务,并详细描述了订阅过程中可能遇到的"OIDC trust missing"错误。该错误是由于业务用户认证需要配置SAP Cloud Identity Services的OpenID Connec

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 310

高通SA8295P音频接口深度解析:全面掌握SA8295P的LS-I2S、PCM/TDM与高性能音频处理技术设计

SA8295P提供丰富的音频接口选项,包括LS-I2S、PCM/TDM和HS-I2S接口,具备灵活的配置选项,适合各种高保真音频和高速数据传输应用。结合LS-I2S和PCM/TDM接口:在复杂的音频编解码器设计中,可结合使用LS-I2S和PCM/TDM接口,以处理和传输不同的音频数据流。使用HS-I2S接口:在软件定义无线电(SDR)系统中,高速I2S接口可处理高速数据流,如无线电信号的解码和处理。LS-I2S(低速I2S)接口是SA8295P的一部分,提供了丰富的音频数据传输选项。

weixin_43199439的博客 1403

设计模式- 组合模式(Composite)结构|原理|优缺点|场景|示例

组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构来表示“部分-整体”的层次结构。这种模式使得客户端可以以一致的方式处理单个对象(叶子节点)和组合对象(容器节点),无需关心处理的是个体还是群体。组合模式使得你可以将对象看作是树形结构中的节点,节点可以是简单的对象,也可以是包含其他节点的复合对象,这样就能形成一个层次化的结构。

piaomiao_的博客 2951

【小白深度教程 1.32】手把手教你从多视角图像进行 3D 重建(SfM 算法)

重建的目标是从一组照片中推导场景的几何结构,假设摄像机位置和内部参数是已知的或可以从图像集中猜测。 这是通过使用多个照片,在其中应用运动结构法(Structure from Motion,SfM)来解决像素级对应问题,部分地恢复3D信息来实现的。

2401_87064292的博客 2158

二十三种设计模式——组合模式(Composite Pattern)

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

也曾北风温柔以待 664

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

设计模式之组合模式(Composite Design Pattern)

组合模式就是将一组对象组织成树形结构,以表示一种“部分 - 整体”的层次结构。组合让客户端可以统一单个对象和组合对象的处理逻辑。 组合模式其实是代表的是一种树形数据结构。 下面我们通过分析树形结构,一步步推演出组合模式。通过这种方式了解组合模式及它的作用。 什么是树形结构,如图: 用代码表示树的对象: //叶子 class Leaf { private String name; } //树枝 class Branch { private String name; pr

xjj1314的专栏 495

精雕软件(JDpaint) 5.5 绿色版

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

JAVA设计模式之 组合模式【Composite Pattern】

一、组合模式介绍 组合模式(Composite Pattern)有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念。 组合模式有两种模式,透明模式 和 安全模式、下面先来两个类图吧、来看看透明模式和安全模式区别; 从类图上应该能看清楚了,这两种模式各有优缺点,透明模式是把用来组合使用的方法放到抽

小吕丶Code阶区 2279

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

设计模式 17 组合模式 Composite Pattern

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。它允许你将对象组合成树形结构,以表示“部分-整体”层次关系。

jxusthusiwen的专栏 1382

设计模式-07组合模式Composite Pattern

组合模式是一种结构型设计模式,用于将对象组织成树形结构以表示"部分-整体"的层次关系。它允许客户端统一处理单个对象和组合对象,无需关心具体差异。该模式包含组件接口(Component)、叶子节点(Leaf)和组合节点(Composite)三个主要角色,适用于文件系统、图形界面等层次结构场景。实现方式包括经典组合模式(统一接口)和安全组合模式(分离接口),前者提供透明性但可能抛出异常,后者更安全但客户端需要区分对象类型。典型应用包括文件系统管理、GUI组件、组织结构表示等。

d3y1`5 81_09 1037

设计模式-组合模式-Composite Pattern

组合模式(Composite Pattern)是一种结构型设计模式,它主要用于将对象组合成树形结构,以表示“部分-整体”的层次关系。这种模式使得用户可以统一地对待单个对象和组合对象。组件(Component):叶节点(Leaf):Composite:客户端(Client):首先,定义组件接口: 接着,创建叶节点类: 然后,定义组合类: 最后,客户端代码使用组合模式: 1.3.组合模式的应用场景 文件系统:组织结构:GUI组件:文档编辑器:分布式系统:组合模式提供了一种灵活的方式来管理层次结构中的对象,使

wesigj的博客 1654

设计模式:组合模式(Composite Pattern)

import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; /** * 组合模式。 * @author Bright Lee */ public class CompositePattern { public static void main(String[] args) { ...

look4liming的专栏 248

Golang 设计模式系列3: 组合模式(Composite design pattern)

组合结构包含一下对象: Base Component(基础组件) - 基础组件是组合中所有对象的接口,客户端程序使用基础组件来处理组合中的对象。 它可以是一个接口或一个抽象类,包含一些对所有对象都是通用的方法。 Leaf(叶子对象) - 定义组合中元素的行为。 它是组合的基本组成部分,并且实现了基础组件。 它没有对其他组件的引用。 Composite(组合对象) – 它由叶元素组成并实现基本组件...

weixin_36417972的博客 365

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

组合模式(Composite Pattern)是一种对象结构型模式,其定义是将多个对象组合成树形结构以表示“整体-部分”关系的层次结构。它使得客户端对单个对象和组合对象的使用具有一致性。在组合模式中,对象被组织成树形结构,其中顶层的节点被称为根节点,根节点下面可以包含树枝节点和叶子节点,树枝节点下面又可以包含更多的树枝节点和叶子节点。这种结构使得客户端可以统一地处理单个对象和组合对象,无需关心它们的具体类型。

m0_51176516的博客 1574

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

这种结构通常包含多个层次,每个层次上的对象可以是一个独立的实体(叶节点),也可以是一个包含其他对象的容器(组合节点)。组合模式提供了一种优雅的方式来组织和操作层次结构中的对象,使得客户端可以在不知道对象具体类型的情况下操作对象集合。当希望在不同类型的对象之间提供一致的接口时,组合模式可以确保所有的对象(无论是叶子还是组合节点)都遵循相同的接口定义。当客户端代码需要以一致的方式处理单个对象和组合对象时,组合模式可以让客户端无需关心处理的是单个对象还是组合对象。客户端可以一致地对待单个对象和组合对象。

ling_zhi_xin的博客 1589

【设计模式】组合模式(Composite Pattern) 机构组织架构

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

corleone_4ever的博客 969

23种设计模式之组合模式(Composite Pattern)

本篇文章将23种设计模式中的组合模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。

小威的博客 2万+
上一篇: 设计模式之观察者模式(Observer)
下一篇: 设计模式之享元模式(Flyweight)
意田天
博客等级 码龄7年 41粉丝 89原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

意田天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值