结构型——组合模式(Composite)day10

Ansys Zemax|无焦系统设计中的角度单位优化技巧 本文详细介绍了在Ansys Zemax OpticStudio中进行无焦系统设计的核心技巧。重点阐述了从聚焦思维到角度思维的转换,并演示了如何通过开启‘无焦像空间’模式、构建以波前和光束尺寸为目标的评价函数来优化激光扩束镜等系统。文章还分享了使用IMSF操作数处理混合系统以及常见误区避坑的实用指南,旨在帮助光学设计者高效完成无焦系统的设计与分析。 阅读详情

组合模式针对树形结构的模式例如
在这里插入图片描述
传统方案实现
在这里插入图片描述

  1. 将学院看做是学校的子类, 系是学院的子类,这样实际上是站在组织大小来进行分层次的
  2. 实际上我们的要求是:在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系,因此这种方案,不能很好实现的管理的操作,比如对学院、系的添加,删除,遍历等
  3. 解决方案: 把学校、院、系都看做是组织结构,他们之间没有继承的关系,而是一个树形结构,可以更好的实现管理操作。=> 组合模式

组合模式基本介绍

  1. 组合模式(Composite Patterm),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体部分”的层次关系。
  2. 组合模式依据树形结构来组合对象, 用来表示部分以及整体层次。
  3. 这种类型的设计模式属于结构型模式。
  4. 组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象

组合模式类图

在这里插入图片描述

  1. Component :这是组合中对象声明接口,在适当情况下,实现所有类共有的接口默认行为,用于访问和管理Component子部件, Component可以是抽象类或者接口
  2. Leaf: 在组合中表示叶子节点,叶子节点没有子节点
  3. Composite :非叶子节点, 用于存储子部件, 在Component 接口中实现子部件的相关操作,比如增加(add),删除。

组合模式实例

package com.xhl.Composite;

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

package com.xhl.Composite;

public class LeafNode extends Node {

	String name;
	
	public LeafNode(String name) {
		super();
		this.name = name;
	}

	@Override
	public void p() {
		// TODO Auto-generated method stub
		System.out.println(name);
	}

}
package com.xhl.Composite;

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

public class BranchNode extends Node {

	List<Node> nodes = new ArrayList();
	String name;
	
	public BranchNode(String name) {
		super();
		this.name = name;
	}

	@Override
	public void p() {
		// TODO Auto-generated method stub
		System.out.println(name);
	}

	public void add(Node node) {
		nodes.add(node);
	}
}
package com.xhl.Composite;

public class CompositeDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BranchNode univ = new BranchNode("清华大学");
		BranchNode comp = new BranchNode("计算机学院");
		BranchNode info = new BranchNode("信息工程学院");
		
		comp.add(new LeafNode("软件工程"));
		comp.add(new LeafNode("网络工程"));
		comp.add(new LeafNode("计算机科学技术"));
		
		info.add(new LeafNode("通信工程"));
		info.add(new LeafNode("信息工程"));
		
		univ.add(comp);
		univ.add(info);
		
		tree(univ,0);
	}

	private static void tree(Node node,int depth) {
		for(int i=0;i<depth;i++) System.out.print("== ");
		node.p();
		if(node instanceof BranchNode) {
			for(Node n : ((BranchNode) node).nodes) {
				tree(n,depth+1);
			}
		}
	}

}

在这里插入图片描述

组合模式在JDK集合中的应用

java集合类——HashMap就使用了组合模式
在这里插入图片描述
Node就是Leaf叶子节点
HashMap、AbstractHashMap就是 Composite :非叶子节点
Map就是 Component组合中对象声明接口

总结

1)简化客户端操作。 客户端只需要面对一-致的对象而不用考虑整体部分或者节点叶子的问题。
2)具有较强的扩展性。当我们要更改组合对象时,我们只需要调整内部的层次关系,客户端不用做出任何改动.
3)方便创建出复杂的层次结构。客户端不用理会组合里面的组成细节,容易添加节点或者叶子从而创建出复杂的树形结构
4)需要遍历组织机构,或者处理的对象具有树形结构时,非常适合使用组合模式.
5)要求较高的抽象性,如果节点和叶子有很多差异性的话,比如很多方法和属性都不一样,不适合使用组合模式

ssd训练自己的数据集 基于SSD实现目标检测(训练自己的数据集) 阅读详情

相关推荐

EMC辐射发射测试:垂直与水平极化测试原理与实战指南

电磁兼容(EMC)测试是确保电子设备在复杂电磁环境中稳定运行的关键环节,其核心在于评估设备产生的电磁干扰(EMI)强度。辐射发射测试作为EMC测试的重要组成部分,通过测量设备向空间辐射的电磁噪声,判断其是否符合国际标准限值。测试原理基于电磁波的极化特性,即电场矢量的振动方向,主要分为垂直极化和水平极化。理解极化特性对于精准定位辐射源、高效进行EMC整改具有重要技术价值。在工程实践中,垂直极化噪声通常源于线缆辐射等垂直结构,而水平极化噪声多来自PCB走线等水平结构。通过分别测量两种极化方向的辐射最大值,可以全

weixin_32770423的博客 351

组合模式——公司组织结构

一 模式定义组合模式:将对象组合成树形结构以表示“部分一整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 二 组合模式举例1 模式分析我们借用公司组织结构图来说明这一模式。经过分析后,我们得出该模式静态类图如下:2代码示例2.1建立员工抽象类 package com.demo.composite; /** * 职工类接口 * * @author ...

weixin_30783913的博客 272

ClickHouse集群扩容实战:用clickhouse-copier搞定数据迁移与分片重平衡

本文详细介绍了使用clickhouse-copier工具实现ClickHouse集群从3分片到5分片的平滑扩容实战。通过分片级并行处理、原子性保证等核心机制,该工具能高效完成数据迁移与分片重平衡,同时保持服务连续性。文章涵盖集群拓扑规划、表结构检查、迁移配置、执行监控及迁移后优化等关键步骤,为大数据量场景下的ClickHouse扩容提供完整解决方案。

weixin_29091837的博客 294

设计模式之:组合模式

目录 组合模式动机与定义 组合模式结构与分析 组合模式实例与解析 组合模式效果与应用 组合模式扩展 组合模式动机与定义 模式动机: 对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象,如子文件夹和文件)并调用执行。(递归调用) 由于容器对象和叶子对象在功能上的区别,在使用这些对象的客户端代...

Blossom 794

云模型在综合评价过程中的应用

目录 1 云模型标尺(标准云模型)的构建方法 1.1 通过正态云的“3En 规则”来表示评价论域 1.2 通过论域的边界值隶属度相等来表示评价论域 1.3 通过黄金分割法来表示评价论域 2 确定评价结果的过程 2.1 基本云发生器 2.2 X条件云发生器 2.3 两种方法的区别 综合评价问题一般分为以下六个步骤 1、明确评价目的; 2、确定被评价对象; 3、建立评价指标体系(包括收集评价指标的原始值、评价指标的若干预处理等); 4、确立与各项评价指标相对应的权重系数; 5、选..

weixin_62223576的博客 1万+

大数据分析工具Power BI(二):Power BI下载安装和模块介绍

首先在Microsoft官方网站上下载PowerBI Desktop,然后进行安装。id=58494点击"Next"后会弹出下载框,进行下载即可,下载好的PowerBI名称为"PBIDesktopSetup_x64.exe",也可以在"资料"中获取安装包,双击安装包即可安装。

Lansonli(蓝深李)的博客 2317

【大话设计模式-11】组合模式(案例解析)

1 看一个学校院系展示需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图: 2 传统方案解决学校院系展示(类图) 3 传统方案解决学校院系展示存在的问题分析 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方案,不能很好实现的管理的操作,比如对学院、系的添加,删除,遍历等 解决方案:把学校、

计忆芳华的博客 1291

CenterPoint 工程复现

CenterPoint 工程复现,本文中使用版本:BEVerse工程下的mmdet3d (`MMDet3d v0.17.3`)版本,MMDetection3D中其他版本的使用`大同小异`。

Darchan的博客 5663

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

组合模式(Composite Pattern) 基本介绍 组合模式(Composite Pattern),又叫部分整体模式,把部分和整体的关系用树形结构来表示,从而使客户端对单个对象和组合对象的访问具有一致性,可以使用统一的方式处理部分对象和整体对象。 组合模式依据树形结构来组合对象,用来表示部分以及整体层次。 UML原理类图 角色及职责分析 抽象构件(Component)角色: 定义了叶...

Duktig的博客 504

3D深度饼图的QT实现

首先,我们需要创建一个QT项目并创建一个窗口,用于显示我们的饼图。在QT Creator中,选择创建一个新的QT Widgets应用程序项目,并创建一个新的窗口类。在本文中,我将介绍如何使用QT实现一个3D深度饼图(Pie 3D)的可视化效果。在构造函数中,我们将创建一个饼图(QChartView)并设置饼图的数据。这是一个简单的示例,您可以根据需要自定义和扩展代码来创建更复杂的饼图。现在,我们已经完成了3D深度饼图的QT实现。您将看到一个具有相应数据的3D深度饼图显示在窗口中。3D深度饼图的QT实现。

CodeJolt的博客 277

『OPEN3D』1.2 mesh处理 python篇

介绍open3d对mesh的基本处理操作

NNNNNathan的博客 4648

设计模式精讲 Day 8:组合模式(Composite Pattern)

组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构以表示“整体-部分”的层次结构。组合模式让客户端可以统一地处理单个对象和对象组合,而无需关心它们的具体类型。将对象组织成树状结构客户端可以一致地操作单个对象和对象组合通过递归结构简化复杂系统的管理今天学习了组合模式(Composite Pattern),它是一种结构型设计模式,能够将对象组织成树形结构,使客户端可以统一处理单个对象和对象组合。

在未来等你的专栏 486

SAP 集成泛微 OA Open API 新建流程申请接口

《SAP ERP 与泛微 OA 的系统集成》系列文章。泛微 Open API 是基于 HTTPS 的 Restful 接口,上篇文章,我已经完成了调用业务接口之前的准备工作,这篇文章我以新建流程申请这个系统集成最重要的接口为例,讲解接口设计、泛微 API 调用的过程、遇到的问题、解决的办法。

SAP李斌,本人承诺所有原创文章均不使用任何AI生成技术,请大家放心阅读。 3555

设计模式每日硬核训练 Day 14:组合模式(Composite Pattern)完整讲解与实战应用

组合模式用于构建树状结构的对象系统文件夹包含文件和子文件夹UI 容器包含多个控件公司组织结构:员工 ← 部门 ← 公司将对象组成树形结构,客户端可以“统一操作”叶子节点与中间节点。统一接口,客户端无差别调用树结构天然适合层次建模扩展方便,添加新节点只需实现 Component。

Interview_TC的博客 1173

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

一,C#设计模式:组合模式(Composite Pattern) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _9.组合模式 { //组合模式主要用来...

dcujcivw769565的博客 158

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

迭代器与组合模式

迭代器(Iterator)与组合(Composite)模式1. 迭代器模式1.1 早餐与午餐的合并1.2 两种不同的菜单表现方式带来的问题1.3 自定义迭代器1.4 java.util.Iterator1.5 扩展性单一责任原则组合模式要点 管理良好的集合 1. 迭代器模式 1.1 早餐与午餐的合并 煎饼屋和餐厅合并!!!同时要求合并菜单,由煎饼屋提供早餐,由餐厅负责午餐。 煎饼菜单如下: K&B’s薄煎饼早餐 ---- $2.99 薄煎饼、清蛋和吐司 薄煎饼早餐例餐 ---- $2.99

weixin_43381785的博客 667

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

迭代器模式(Iterator Pattern)与组合模式(Composite Pattern)

什么是迭代器模式 正式定义 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露其内部的表示。 把游走的任务放在迭代器上,而不是聚合上,这样简化了聚合的接口和实现,也让责任各得其所。 一个迭代器模式的结构 一个聚合对象的接口,该接口中包含创建迭代器的方法,具体的聚合类实现该接口的创建迭代器方法,并返回一个迭代器对象; 一个迭代器接口,包含next、hasNe...

biangu1486的博客 360

设计模式学习--迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)

目前已经更新的部分资料:网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!菜单/**煎饼屋菜单实现*//**

2401_84562251的博客 1058

设计模式--组合模式

目录:此模式中的示例,基于迭代器模式,传送门:迭代器模式 组合模式:允许你将对象组合成树形结构来表现"整体/部分"层次结构。组合能让客户以一致的方式处理个别对象以及对象组合; 知识点的梳理: 组合模式提供一个结构,可同时包容个别对象和组合对象; 组合模式允许客户对个别对象以及组合对象一视同仁; 组合结构内的任意对象称为组件,组件可以是组合,也可以是叶节点; 在实现组合模式时,有

老赫的私人厨房 913

《Head First 设计模式》学习笔记——迭代器模式 + 组合模式

迭代器模式是与集合共生共死的,一般来说,我们只要实现一个集合,就需要同时提供这个集合的迭代器,就像java中的Collection,List、Set、Map等,这些集合都有自己的迭代器。假如我们要实现一个这样的新的容器,当然也需要引入迭代器模式,给我们的容器实现一个迭代器。————题记 设计模式 迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露其内部的表示。 把游走

1729

设计模式学习--迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)(1)

**定义菜单组件*/

2401_84004024的博客 469

23个设计模式一文搞懂

本笔记涵盖 23 种经典设计模式,按创建型、结构型、行为型三大类整理。每个模式配有生活类比、核心思想、结构图解、实现要点、真实应用案例、适用场景、优缺点分析及常见面试题。

weixin_72753562的博客 802

航天任务数据建模实战:从实体事件到时间线分析

数据建模是处理复杂业务逻辑和时序信息的核心技术,其核心在于将现实世界中的对象和过程抽象为计算机可处理的实体与事件。通过定义清晰的类结构(如航天器、任务事件)并建立它们之间的关联关系,可以构建出能够精确描述系统状态变化的数据模型。这种建模方法在航天任务分析、物流跟踪、项目管理等涉及多实体状态转换的场景中具有极高的技术价值,能够将非结构化的历史描述转化为可查询、可计算的结构化数据。本文以挑战者号航天飞机STS-6任务为具体案例,详细演示了如何使用Python实现从实体定义、事件创建到时间线查询与报告生成的全过程

weixin_34293911的博客 554

创建型——工厂系列(Factory)day04

任何可以产生对象的方法或类,都可以称为工厂 单例也是一种工厂 为什么有了new以后,还要有工厂? 1、灵活控制生产过程 2、权限、修饰、日志…… 接口模式 package cn.xhl.interfacemodel; public interface IFruit { public void plant(); public void harvest(); public void grow(); } package cn.xhl.interfacemodel; public class ..

zero_ko的博客 2502
上一篇: 结构型——装饰器(Decorator)day09
下一篇: 网络安全笔记
哆唻咪à
博客等级 码龄9年 0粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值