设计模式-组合模式

news2025/1/19 7:12:46

组合模式

  • 一、学校院系展示需求
  • 二、传统方案解决学校院系展示
  • 三、组合模式基本介绍
  • 四、组合模式原理类图
  • 五、组合模式解决的问题
  • 六、使用组合模式解决院校展示问题
    • 6.1、类图
    • 6.2、代码

一、学校院系展示需求

编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。如图

在这里插入图片描述

二、传统方案解决学校院系展示

在这里插入图片描述

传统方案解决学校院系展示存在的问题分析

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

三、组合模式基本介绍

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

四、组合模式原理类图

在这里插入图片描述

组合模式原理分析(组合模式的角色及职责)

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

五、组合模式解决的问题

组合模式解决这样的问题,当我们要处理的对象可生成一个树形结构而我们要对树上的节点进行操作时,他能够提供一致的方式,而不用考虑其他节点

在这里插入图片描述

六、使用组合模式解决院校展示问题

6.1、类图

在这里插入图片描述

6.2、代码

OrganizationComponent

未完待续。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/41301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL练习题

新建数据表 首先建立测试数据库的表,新建数据库的sql语句如下,大家可以粘贴成一个sql文件,然后新建所有的表并插入所有的数据: 新建数据库sql文件: DROP TABLE IF EXISTS EMP; DROP TABLE IF EXISTS DEPT; DROP TAB…

Unity UI锚点和位置关系

一、Anchors锚点 Anchors的设置会直接改变RectTransform中它的位置信息;Anchors设置中的X 改变会影响(PosX和Width)或(left和right) 1、Anchors改变位置信息 下图中X锚点的Min和Max值相同时,上面的一栏中…

Java调用命令行并返回打印的内容

博主在最近的工作中,收到了这样一个需求。 调用别人以前完成开发的 jar 包或 python 程序,并将原程序在命令行中输出的内容封装为 JSON 对象后通过 RESTFul 接口返回。 面对以上的需求,博主给出了以下解决方案。话不多说,上代码。…

Mathematica for Linux v13.1.0 科学计算软件多语言版

Wolfram Mathematica for Linux 中文正式版是一款强大的数学计算科学计算软件,MathWorks MATLAB 和 Wolfram Mathematica 、Maplesoft Maple 并称为三大数学软件,Wolfram Mathematica 中文正式版主要用于符号计算软件,也称为计算机代数系统&a…

MySQL如何恢复不小心误删的数据记录(binlog)

前言 题主于今天(2022年11月27日) 在线上环境误操作删除了记录,且没有备份数据,通宵排查事故原因,终于没有酿成生产事故。谨以此文记录。 参考资料 https://blog.csdn.net/qq_23543983/article/details/127298578 …

单源最短路径问题(Java)

单源最短路径问题(Java) 文章目录单源最短路径问题(Java)1、问题描述2、算法思路3、代码实现4、算法正确性和计算复杂性4.1 贪心选择性质4.2 最优子结构性质4.3 计算复杂性5、参考资料1、问题描述 给定带权有向图G(V,E),其中每条…

分布式电源接入对配电网的影响matlab程序(IEEE9节点系统算例)

分布式电源接入对配电网的影响matlab程序(IEEE9节点系统算例) 摘 要:分布式电源的接入使得配电系统从放射状无源网络变为分布有中小型电源的有源网络。带来了使单向流动的电流方向具有了不确定性等等问题,使得配电系统的控制和管…

Android反编译apk

文章目录安装Android Studio1. 解压apk文件方法一:使用apktool反编译(得到的是.smali文件和可直接读的资源文件,如果要得到.dex文件,还要看方法二)方法二:使用解压工具解压(得到的是.dex文件和二…

SpringBoot项目集成Dubbo

1.环境搭建 为整合Dubbo之前,我们所写的项目都是单一应用架构,只需要一个应用,将所有功能都部署在一起,在应用内部是控制层调用业务层,业务层调用数据持久层;如今,整合Dubbo后,我们…

独立产品灵感周刊 DecoHack #039 - 制作自己的音乐墙

本周刊记录有趣好玩的独立产品设计开发相关内容,每周发布,往期内容同样精彩,感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到,建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。自荐产品 1. planet-tab - 由独立开发者 ha…

【云原生】Docker的私有仓库部署——Harbor

内容预知 1.Docker原生私有仓库—— Registry 1.1 Registry的简单了解 1.2 Registry的部署过程 步骤一:拉取相关的镜像 步骤二:进行 Registry的相关yml文件配置(docker-compose) 步骤三:镜像的推送 2. Registry的…

SpringBoot SpringBoot 原理篇 2 自定义starter 2.6 拦截器开发

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇2 自定义starter2.6 拦截器开发2.6.1 拦截器开发2.6.2 小结2 自定义starter …

2022年11月27日学习 SVM

SVM,英文全称为 Support Vector Machine,中文名为支持向量机 ​ SVM也是一种分类算法,它的核心思想用我自己的话来讲就是先找到两个类别中距离最近的几个点作为支持向量,然后计算超平面,超平面需要间隔最大化。然后用超…

【Hack The Box】linux练习-- Previse

HTB 学习笔记 【Hack The Box】linux练习-- Previse 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月27日🌴 &#x1f…

Microsoft SQL Server中的错误配置

介绍 这篇文章将介绍如何利用Microsoft SQL Server中的错误配置,尝试获取反向shell并熟悉Impacket工具的使用,以便进一步攻击某些服务。 impacket的安装地址:https://github.com/SecureAuthCorp/impacket Impacket是用于处理网络协议的Pyt…

FPGA学习-vivado软件的使用

FPGA学习-vivado软件的使用1.杂谈2. vivado新建工程1.杂谈 又被封了7天。 正好封控前领导让我改下fpga代码,趁这个机会好好学习下,虽然在这块一片空白,但是毕竟这块是我的短板,一个不会写代码的硬件工程师是一个不完整的硬件工程…

无条码商品新建商品档案,搭配蓝牙便携打印机移动打印条码标签

null无条码商品的商品档案新建,并打印条码标签,即可实现仓库条码管理,扫码入库,出库,盘点等操作。, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 汉码盘点机PDA, 作者简介 &am…

【WSN通信】A_Star改进LEACH多跳传输协议【含Matlab源码 487期】

⛄一、 A_Star改进LEACH多跳传输协议简介 1 理论基础 1.1 A*算法 A算法是一种智能搜索算法,他在求解问题时所得到的结果会选择所有路径中代价最小的节点。 A算法是一种基于启发式函数的算法,搜索过程如下:首先创建两个分别命名为open表和close表的表格,其中open表中存放还未访…

【Hack The Box】linux练习-- Doctor

HTB 学习笔记 【Hack The Box】linux练习-- Doctor 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月23日🌴 &#x1f3…

量子计算(九):复合系统与联合测量

文章目录 复合系统与联合测量 一、张量积 二、复合系统的状态演化 复合系统与联合测量 拥有两个或两个以上的量子比特的量子系统通常被称为复合系统(composite systems)。单量子比特系统的描述与测量已有所了解,那么多个量子比特的系统该如…