《java与模式》笔记(六) 合成/聚合复用原则

合成聚合复用原则_动力节点Java学院整理 主要介绍了合成聚合复用原则,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 立即下载

☆ 合成/聚合复用原则经常又叫做合成复用原则。该原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。

ξ 10.1 合成与聚合的区别
合成和聚合均是关联的特殊情况。聚合用来表示“拥有”关系或者整体与部分的关系;而合成则用来表示一种强得多的“拥有”关系。在一个合成关系里面,部分和整体的生命周期是一样的。一个合成的新的对象完全拥有对其组成部分的支配权,包括它们的创建和销毁等。使用程序语言的术语来说,组合而成的新对象对组成部分的内存分配、内存释放有绝对的责任。

ξ 10.2 复用的基本种类

☆ 合成/聚合复用
① 优点:
? 新对象存取成分对象的唯一方法是通过成分对象的接口;
? 这种复用是黑箱复用,因为成分对象的内部细节是新对象所看不见的;
? 这种复用支持包装;
? 这种复用所需的依赖较少;
? 每一个新的类可以将焦点集中在一个任务上;
? 这种复用可以在运行时动态进行,新对象可以使用合成/聚合关系将新的责任委派到合适的对象。
② 缺点:
? 通过这种方式复用建造的系统会有较多的对象需要管理。

☆ 继承复用
① 优点:
  新的实现较为容易,因为基类的大部分功能可以通过继承关系自动进入派生类;
  修改或扩展继承而来的实现较为容易。
② 缺点:
  继承复用破坏包装,因为继承将基类的实现细节暴露给派生类,这种复用也称为白箱复用;
  如果基类的实现发生改变,那么派生类的实现也不得不发生改变;
  从基类继承而来的实现是静态的,不可能在运行时发生改变,不够灵活。

ξ 10.3 对违反里氏替换原则的另外一种重构方案
下图左面的UML是违反里氏替换原则的。雇员、经理和学生从人派生,而实际上这三种派生类应该描述一种角色,一个人可能同时是经理和学生,也可能同时是雇员和经理,这个时候通过继承来实现复用显然是不合适的。右图通过重构抽象出角色接口,雇员、经理和学生都是角色接口的实现,然后采用合成/聚合的方式进行复用:


☆ Coad条件是判断是否使用继承复用的通俗描述,只有在所有条件满足时,才应该考虑使用继承,它的内容是:
① 派生类是基类的一个特殊种类,而不是基类的一个角色,即要分清"Has-A"和"Is-A"的区别;
② 永远不会出现需要将派生类换成另一个类的派生类的情况;
③ 派生类具有扩展基类的责任,而不是具有置换或者注销掉基类的责任;
④ 只有在分类学角度有意义时,才可以使用继承。

双目视觉三维重构(一)————简介 优快云中关于立三维重构的介绍层出不穷,CNKI中也有各类综述对三维重构进行总结,撰写这篇博客仅作为本人对该类博客、论文的总结学习,加深自身学习的印象、作为学习的笔记。如有错误的地方,欢迎指正。   1、三维重构 1.1、三维重构到底是什么?   首先要了解立体匹配算法,首先要知道立体匹配算法主要具体应用于什么方向。 三维重构又被称为三维重建,百度百科中对它的定义为:指对三维物体建立适合... 阅读详情

相关推荐

面向网络攻击行为可视化分析系统实现【WebSocket + 可视化】

本系统主要应用于网站运维管理,它解决了网站运维人员排查网络攻击行为复杂且繁琐等问题,提高了运维人员网络安全分析的效率和准确性。

oNew_Lifeo的博客 1622

Java设计模式七大原则-合成聚合复用原则

Java设计模式:合成聚合复用原则

十二间记,知不足而奋斗,望远山而前行。千里不辞行路远,时光早晚到天涯。 1079

告别轮询!用STM32CubeMX给STM32F030配置ADC多通道+DMA,实测代码分享

本文详细介绍了如何使用STM32CubeMX为STM32F030配置ADC多通道采集与DMA传输,显著提升采集效率。通过实测对比轮询与DMA模式的性能差异,提供完整的代码实现和优化技巧,帮助开发者快速掌握这一高效采集方案。

weixin_42570296的博客 410

Java学习 --- 设计模式的七大原则之合成复用原则

1、找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混合在一起。原则上尽量使用合成或者聚合的方式,而不是使用继承。3、为了交互对象之间的松耦合设计而努力。2、针对接口编程,而不是针对实现编程。......

qq_46093575的博客 507

Hypermesh到Abaqus CEL网格转换全攻略:解决欧拉体导入难题

本文详细解析了Hypermesh到Abaqus CEL网格转换的全流程,重点解决欧拉体导入难题。通过单元类型转换、INP文件编辑和多组件合并技术,实现流固耦合仿真的高效前处理。文章包含实用脚本和工程案例,帮助工程师突破ABAQUS CEL分析中的网格转换瓶颈。

weixin_30832143的博客 191

FastDDS之共享内存

transport层负责为DDS用户数据收发和服务发现提供通信。包含UDP,TCP,SHM。

u010378559的博客 3088

【Java 设计模式】设计原则之合成聚合复用原则

合成/聚合复用原则是由Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides等人在《设计模式:可复用面向对象软件的基础》一书中提出的。它指导开发人员在设计中使用合成和聚合来建立对象之间的关系,而不是通过继承。合成/聚合复用原则是一个有助于构建灵活、可维护、可复用软件的基本原则。通过避免过度使用继承,使用合成和聚合来组合对象,我们能够创建更具弹性的系统,更容易适应变化。在实际项目中,开发人员应时刻关注如何设计对象之间的关系,使得系统更具灵活性和可维护性。

好久不见的流星 1352

期末求生指南:手把手教你用浏览器开发者工具绕过百一测评切屏检测

本文详细介绍了如何利用浏览器开发者工具绕过百一测评的切屏检测功能。通过分析JavaScript事件监听机制,定位关键检测代码,并提供实时调试和本地覆盖两种修改方法,帮助学生在遵守规则的前提下更灵活地应对在线考试。文章还包含风险控制和替代方案等实用建议。

weixin_28698059的博客 551

从零开始学习Java设计模式 | 软件设计原则篇:合成复用原则

在本讲,我将为大家介绍软件设计原则里面的第六个原则,即合成复用原则。 概述 合成复用原则是指尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。 我们之前讲过继承关系,虽然使用继承可以提高代码的复用性,但是它存在很多问题,这些问题等会我们再去说,大家也别着急。 了解了合成复用原则的概念之后,我们还应知道,通常类的复用可分为继承复用(使用继承实现代码的复用性)和合成复用(使用组合或者聚合实现代码的复用性)两种。而且,这两种复用各有其优缺点,下面我就为大家详细阐述一下。 我们先来看下继承复用的

李阿昀的博客 1399

科研绘图系列:R语言绘制世界地图数据分布(world map)

科研绘图系列:R语言绘制世界地图数据分布(world map)

专注生信领域 527

快速卷积结构FIR数字滤波器的设计与ARM平台实现

本文提出了一种基于快速卷积结构的FIR数字滤波器设计与实现方案。通过Matlab设计了满足特定指标的低通FIR滤波器,采用重叠-保存法和重叠-相加法两种快速卷积算法,将计算复杂度从O(N·M)降低到O(NlogN)。详细介绍了滤波器系数生成、性能验证流程,并提供了ARM平台C语言实现的关键技术,包括定点量化处理。实验结果表明,该方法能有效滤除混合信号中的高频干扰,保留目标1kHz正弦信号,验证了设计方案的有效性。

huanghm88的专栏 124

Java 设计模式6大原则之(五):合成/聚合复用原则

合成/聚合复用原则 定义 合成/聚合复用原则经常叫做合成复用原则。该原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。尽量使用对象组合,而不是继承来达到复用的目的。 概述 在面向对象设计中,可以通过两种方法在不同的环境中复用已有的设计和实现,即通过组合/聚合关系或通过继承,但首先应该考虑使用组合/聚合,组合/聚合可以使用系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类的影响相对较少;其次才考虑继承,在使用继承时,需要.

baipenggui_bo 1779

华为嵌入式面试题及参考答案(持续更新)

异步是指在程序执行过程中,某些任务不需要等待立即完成就可以继续执行其他任务的过程。在计算机编程中,异步通常用于处理长时间运行的操作,如文件读写、网络通信等,以避免阻塞主线程。异步处理通常涉及到回调函数、事件循环、协程或未来的概念。使用宏定义来避免命名冲突。#else#endif堆和栈是计算机程序中用于存储数据的两种不同类型的内存区域。

大模型大数据攻城狮的专栏 2484

Java设计模式——合成/聚合复用原则

一、什么是合成/聚合复用原则? 合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。 简述为:要尽量使用合成/聚合,尽量不要使用继承。 二、合成和聚合的区别;依赖和关联 合成(Composition)和聚合(Aggregation)都是关联(Association)的特殊种类。用C语言来讲,合成是值的聚合(A

u010832572的专栏 2万+

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

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

设计模式——合成/聚合复用原则

一、什么是合成/聚合复用原则? 合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。 简述为:要尽量使用合成/聚合,尽量不要使用继承。 二、合成和聚合的区别;依赖和关联 合成(Composition)和聚合(Aggregation)都是关联(Association)的特殊种类。用C语言来讲,合成是值的聚合(Agg...

编程拾掇 1279

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【设计模式笔记05】:合成-聚合复用原则

合成-聚合复用原则(CARP)提倡优先使用对象组合而非继承来实现代码复用。继承虽然简单但存在耦合度高、破坏封装等缺点,而组合/聚合方式能保持封装性、降低耦合度并提高灵活性。通过CRM系统数据库连接的案例说明,将继承改为聚合关系后,系统扩展性显著提升,能轻松支持多种数据库类型而不修改已有代码。该原则体现了"has-a优于is-a"的设计思想,是构建松耦合系统的重要指导。

lyh2004_08的博客 1413

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

设计模式——合成/聚合复用原则(Java)

一、什么是合成/聚合复用原则? 合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。 二、合成和聚合的区别; (1)聚合用来表示“拥有”关系或者整体与部分的关系。代表部分的对象有可能会被多个代表整体的对象所共享,而且不一定会随着某个代表整体的对象被销毁或破坏而被销毁或破坏,部分的生命周期可以超越整体。 类似于...

戴泽王的博客 827

Java设计模式-合成复用原则

合成复用原则 【Composite Reuse Principle,CRP】 定义:软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现 问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。 解决方案:合成复用原则是通过将已有的对象纳入新对...

码农日常的博客 1万+

6.合成复用原则

在这个例子中,Car类通过组合的方式包含了Engine类的对象,而不是通过继承。这是不允许的,因为GasolineCar和ElectricEngine之间没有继承关系,它们都是Vehicle的子类,但彼此之间并不相关。首先,我们定义一个简单的Engine类,这个类包含一些基本的属性和方法,比如发动机的型号、功率以及启动发动机的方法。接下来,我们定义一个Car类,这个类通过一个Engine类型的成员变量来引用一个发动机对象。----> NO!通常类的复用分为:合成复用(推荐) 与 继承复用。

m0_68765858的博客 1967

什么是合成复用原则?

合成复用原则的本质是通过“关联关系”(组合/聚合)实现代码复用,减少对继承的依赖,从而降低类间耦合,提高系统的灵活性和可维护性。在Java开发中,它与SOLID原则(尤其是依赖倒置、开闭原则)相辅相成,是设计模式(如装饰器模式、策略模式、组合模式)的重要思想基础。合理应用合成复用,能让代码更适应业务变化,减少修改带来的风险。

weixin_43521001的博客 1111

Java设计模式之合成复用原则介绍与说明

定义合成复用原则强调,在软件复用时应优先使用组合或聚合等关联关系,而非继承关系。通过将已有对象纳入新对象中,新对象通过调用已有对象的功能实现复用。核心思想组合(Composition):强拥有关系,部分与整体生命周期一致(如汽车与引擎)。聚合(Aggregation):弱拥有关系,部分可独立存在(如班级与学生)。目标:降低类间耦合度,提升灵活性和可维护性。合成复用原则通过组合或聚合关系实现灵活、低耦合的设计,是应对软件变化的核心策略之一。

DKPT的博客 878

设计模式系列之设计原则(7)合成复用原则(组合/聚合复用原则)

定义 在软件设计过程中,类间关系优先使用组合关系或聚合关系,其次使用继承关系。 对于类的复用,分为合成复用和继承复用,两者都为适应需求变化,对系统进行扩展。合成复用原则强调合成关系的重要性,但并不否定继承关系。只是为达到低耦合系统的目标出发,合成带来的优势比继承更大。两者的优缺点对比如下。 继承复用主要存在以下优缺点: 优点 简单易实现 缺点 继承复用破坏了类的封装性。因为继承会将父类的实现细节暴露给子类,父类对子类是透明的,所以这种复用又称为“白箱”复用。 子类与父类的耦合度高。父类的实现的任何

TylerGuoj的博客 1349

合成复用原则

一、什么是合成/聚合复用原则? 合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。 简述为:要尽量使用合成/聚合,尽量不要使用继承。 二、合成和聚合的区别;依赖和关联 合成(Composition)和聚合(Aggregation)都是关联(Association)的特殊种类。用C语言来讲,合成是值的聚合(A...

三方 1396
上一篇: 《java与模式》笔记(五) 接口隔离原则
下一篇: 《java与模式》笔记(七) 迪米特法则
plusir
博客等级 码龄24年 11粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值