java中组合_java中组合模式详解和使用方法

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

这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。

介绍

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

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

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

如何解决:树枝和叶子实现统一接口,树枝内部组合该接口。

关键代码:树枝内部组合该接口,并且含有内部属性 List,里面放 Component。

应用实例: 1、算术表达式包括操作数、操作符和另一个操作数,其中,另一个操作符也可以是操作数、操作符和另一个操作数。 2、在 JAVA AWT 和 SWING 中,对于 Button 和 Checkbox 是树叶,Container 是树枝。

优点: 1、高层模块调用简单。 2、节点自由增加。

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

使用场景:部分、整体场景,如树形菜单,文件、文件夹的管理。

注意事项:定义时为具体类。

实现

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

e2c7a60b272e80cc45d9c142382013e1.png

55fdb4ba67cbaded66b603e73bfc3648.png

64bb3283b03e9e7c1fb7395b1044e1b9.png

ab49d65f1ff793ee9684dc9bd410351c.png

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

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

相关文章

道客巴巴vip账号共享2020_腾讯视频VIP怎么两个手机通用?

理论上来说,腾讯视频VIP可以同时在3个设备上登录,但只能在2个设备上同时播放视频。这也就意味着,腾讯视频VIP可以在两个手机上同时使用。腾讯视频VIP基本可以分为微信区、QQ区,两者并不互通。近期腾讯视频手机端修改了登录规则&am…

python3示例_Python3 实例(七)

原标题:Python3 实例(七)Python 将字符串的时间转换为时间戳给定一个字符串的时间,将其转换为时间戳。实例import timea1 "2019-5-10 23:40:00"# 先转换为时间数组timeArray time.strptime(a1, "%Y-%m-%d %H:%M:%S")# 转换为时间戳…

java基础知识一_Java基础知识(一)

类与对象1.对象:客观存在的一切事物称之为对象类:具有相同属性和方法的对象的集合2.类:属性,方法3.修饰符:  public    protected               默认(不写)           private任何地…

python生成相似句子_4种方法计算句子相似度

Edit Distance计算两个字符串之间,由一个转成另一个所需要的最少编辑次数,次数越多,距离越大,也就越不相关。比如,“xiaoming”和“xiamin”,两者的转换需要两步:去除‘o’去除‘g’所以&#x…

mysql主从配置常见问题_mysql 主从复制配置,以及常见问题解决!

一:我的mysql 5.7.15 ,系统是centos6.5主从复制配置步骤:瞅清楚!配置不要出错!!二:遇到的问题Got fatal error 1236 from master when reading data from binary log解决方案:在ma…

pythontcp文件传输_python socket实现文件传输(防粘包)

1.文件传输的要点:采用iterator(迭代器对象)迭代读取,提高读取以及存取效率;通过for line in file_handles逐行conn.send();2.socket粘包问题:[出现原因]:A.TCP协议为了提高传输效率,发送方往往需要收集定量…

python分析txt文件_python解析文本文件

python解析的文件原始数据:汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。天生丽质难自弃,一朝选在君王侧。回眸一笑百媚生,六宫粉黛无颜色。春寒赐浴华清池,温泉水滑洗凝脂。侍儿扶起娇…

python中hist函数参数_用hist参数解释Python,python,解读

python用hist参数解读python 中绘制hist的方法有很多,我经常用的是matplotlib直接用x,y绘制;Dataframe直接.hist绘制;绘制直方图1.bins为80的图形fig plt.figure(figsize(15, 9))for i in range(12):plt.subplot(3,4,i1) # 3行4列 位置是i1的…

java 字符串是对象吗_解析Java中的String对象的数据类型

解析Java中的String对象的数据类型2007-06-06eNet&Ciweek1. 首先String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。2. …

7-7 六度空间 (30分)_现役球员中,谁最可能成下一位30000分先生?3大前十巨星没戏...

想要在NBA联盟得到3万分有多难?从联盟成立至今的70多年中,总得分超过3万分的球员一共只有7位,他们分别是贾巴尔、马龙、詹姆斯、科比、乔丹、诺维茨基和张伯伦,剩下的强如大鲨鱼、艾弗森都没能完成这一壮举,那现役球员…

java右键弹出菜单_javascript自定义右键弹出菜单实现方法

本文实例讲述了javascript自定义右键弹出菜单实现方法。分享给大家供大家参考。具体实现方法如下:无标题页var oPopup window.createPopup();function PopMenu(id){var oPopBody oPopup.document.body;oPopBody.style.backgroundColor "buttonface";oP…

union all动态表_Excel VBA——动态显示图表

本文讲述将柱形图和折线图做成动态图表的方法。所谓动态是指鼠标点到哪个单元格,就显示活动单元格所在列或行的图表,其中折线图可以让数据点依次显示,使得整个图表不再死板,像变 了一样!在开始之前,需要先介…

xnio java_java基础篇---新I/O技术(NIO)

在JDK1.4以前,I/O输入输出处理,我们把它称为旧I/O处理,在JDK1.4开始,java提供了一系列改进的输入/输出新特性,这些功能被称为新I/O(NEW I/O),新添了许多用于处理输入/输出的类,这些类都被放在ja…

python函数返回none_Python 函数默认返回None的原因

Python 函数默认返回None是什么原因?定义的函数没有返回值,Python 解释器就会强行地默认给注入一段返回逻辑!实际上 Python 中有很多行为都是隐性的。Python 有一项默认的做法,很多编程语言都没有,所有函数都会有一个返…

简易计算器 java_用Java做一个简易计算器,要用到哪些知识?

分析问题关键词:Java、计算器深夜无聊,暂且一答。计算器分两个步骤:计算 器篇一 「器」在编程中,我们可以把「器」理解为「GUI(图形界面)」,Java 语言描绘的图形界面有很多种类,比如 awt、swing、javaFX 等…

picturectrl控件中加载图片并显示_如何在EasyX窗体中显示图片

前提:图片必须是.jpg或.bmp格式的图片。(一)将保存在电脑桌面上的图片显示在EasyX窗体中,图片路径为:C:甥敳獲Administrator.USER-20190823VFDesktop锤头镰刀旗.jpg。(二)程序代码:#include#includeint main(){initgraph(500,300)…

estemplate 导入MySQL_[数据库]es~通过ElasticsearchTemplate进行聚合操作

[数据库]es~通过ElasticsearchTemplate进行聚合操作02020-08-24 17:00:38聚合操作,我们可以对数据进行分组的求和,求数,最大值,最小值,或者其它的自定义的统计功能,es对聚合有着不错的支持,需要…

iis mysql版本切换_MySQL+PHP配置 Windows系统IIS版(转)

1、下载MySQL下载地址:http://dev.mysql.com/downloads/mysql/5.1.html->Windows (x86, 32-bit), MSI Installer Essentials - Recommended(不包含文档)->No thanks, just start my download.(无需登录注册 直接下载)PHP下载地址:www.php.net->…

ping网关丢包_网络/摄像机丢包的原因分析

引文不少人在使用网络和监控摄像系统的时候都有遇到过数据丢包的情况,数据丢包的原因是多种多样的,以下就为大家介绍一下网络数据丢包的原因及摄像机丢包的原因。原因分析摄像机丢包的原因1:路由错误网络路径错误也会导致数据包不能到达目的主…

java aes 填充_Java中的Aes解密 – 填充问题

我更改了一些代码行,以保证大文件的加密.现在我遇到了问题,解密不起作用.我收到以下错误消息/异常:Error encrypting/decrypting fileat Algorithmus.Encryptor.doCrypto(Encryptor.java:71)at Algorithmus.Encryptor.decrypt(Encryptor.java:39)at GUI.MainWindow$…