合成/聚合复用原则

news/2024/5/6 7:59:33/文章来源:https://www.cnblogs.com/kyzh-lhl/p/16714896.html

合成/聚合复用原则

很多情况继承会带来麻烦:对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常密切的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。

合成/聚合复用原则(CARP),尽量使用合成/聚合,尽量不要使用类继承。

合成(Composition)和聚合(Aggregation)都是关联的特殊种类。聚合表示一种弱的‘拥有关系’,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;合成则是一种强的‘拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。

合成/聚合复用原则的好处:

优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。

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

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

相关文章

港科夜闻|香港科大为庆祝建校30周年举办慈善义卖,限量推出一批具有收藏价值的非同质化代币(NFT)艺术精品...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科大为庆祝建校30周年举办慈善义卖,限量推出一批具有收藏价值的非同质化代币(NFT)艺术精品。这系列NFT艺术收藏品的亮点,就是26款按英文字母A至Z排列、重现香港科大生活点滴的原创数码图像&#…

【计算机网络】第五章 传输层

第五章 传输层 一、传输层概述 传输层功能 协议:TCP和UDP 是只有主机才有的层次 功能: 提供进程和进程之间的通信,网络层提供的是主机之间的通信复用和分用:将数个进程的信息复用起来,发送出去;收到信息…

安装 Windows Server 2019 VM虚拟机

目录(1)系统语言设置(2)点击【Install now】(3)激活Windows(4)选择安装版本(5)同意【license terms】(6)选择安装类型(7&a…

新华三学习记录

文章目录前言计算机网络基础基本概念TCP/IP四层和OSI七层模型LAN/WAN冲突域基本组网基本协议总结前言 本博客仅做学习笔记,如有侵权,联系后即刻更改 科普: 计算机网络基础 参考文章 基本概念 计算机网络 分布各地的具有独立功能的计算机…

【云原生-Docker】Docker 安装 MySQL

🍁博客主页:👉不会压弯的小飞侠 ✨欢迎关注:👉点赞👍收藏⭐留言✒ ✨系列专栏:👉Docker学习专栏 ✨学习社区:👉不会压弯的小飞侠 ✨知足上进,不负…

5.Eureka服务注册的源码分析(springcloud)

一、Eureka 概念的理解 1 服务的注册 当项目启动时(eureka 的客户端),就会向 eureka-server 发送自己的元数据(原始数据)(运行的 ip,端口 port,健康的状态监控等,因为使用…

P02 反射

P02 反射1.反射概述1.1 反射的基本作用1.2 反射的关键2.反射获取类对象2.1 forName(String className)2.2 类名.class2.3 对象.getClass()3.反射获取构造器对象![在这里插入图片描述](https://img-blog.csdnimg.cn/e234dd155af94a5c80223d64b112f4bf.png)3.1 Class 类中用于获取…

18.Composition API(四)高级语法补充

1.自定义指令 之前我们学习了各种指令:v-model、v-for、v-show等,除了这些指令外,Vue允许我们自定义指令。 什么时候使用自定义指令? 需要对DOM元素进行底层操作,这个时候就会用到自定义指令。 注意:在V…

第二章 ES数据操作与集群

一、回顾 1.介绍ES 2.ES原理 3.ES功能 4.ES使用场景 5.ES安装 1)ES配置文件(单点配置) [root@es01 ~]# grep ^[a-z] /etc/elasticsearch/elasticsearch.yml node.name: es-1 path.data: /data/es/data path.logs: /data/es/log bootstrap.memory_lock: true network.host: 1…

Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8

因为另一台机器开发时,android studio提示更新什么东西,无脑点了。 导致原先的那台开发机器,无法build,报异常: Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8 有两个方法解决: 1、修改jdk从1.8改到11如果没有这个选项,可能需要安装…

高项重点内容

BI,商业智能 联机事务处理OLTP主要是执行基本日常的事务处理,比如数据库记录的增删查改。比如在银行的一笔交易记录,就是一个典型的事务。联机分析处理是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持&…

Java高级:IO

笔记来源:尚硅谷Java入门视频教程(在线答疑Java面试真题) 文章目录一 File类的使用1.1 基本概述1.2 File类的常用构造器1.3 路径分隔符1.4 File类常用方法二 IO流原理及流的分类2.1 IO原理2.2 流的分类2.3 节点流和处理流2.4 InputStream & Reader2.4.1 InputSt…

mini LED显示屏—点胶测量

mini LED显示屏作为一种LED的一种技术,其产品已开始应用于超大屏高清显示,如监控指挥、高清演播、高端影院、医疗诊断、广告显示、会议会展、办公显示、虚拟现实等商用领域。 而本次测量mini LED显示屏胶水高度。测试采样步距间隔大小的测量精度&#xf…

基于PHP的校园二手信息网站的设计与实现毕业设计源码251656

目 录 摘要 1 绪论 1.1 研究背景 1.2国内外研究现状 1.3论文结构与章节安排 2 校园二手信息网站系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2…

压裂反排液除氨氮树脂技术

项目名称 中国石油工程建设除氨氮项目 工艺选择 沉淀工艺软化系统膜系统离子交换脱氨系统,出水稳定在0.2mg/l 工艺原理 页岩气开采反排液,经过沉淀工艺后进入软化系统,然后经过反渗透工艺后进行离子交换脱氨工艺。 下面这个案例分享是科…

戴尔笔记本重装系统硬盘加密怎么解除

​bitlocker加密可以很好地保护计算机中的数据,那么dell电脑硬盘的bitlocker加密如何解除 ?小编给大家介绍一下解除戴尔笔记本硬盘加密的方法。 工具/原料: 系统版本:windows10系统 品牌型号:戴尔 方法/步骤: 解…

Methyltetrazine-Maleimide,甲基四嗪-马来酰亚胺 一种可降解ADC linker

●中文名:甲基四嗪-马来酰亚胺 ●英文:Methyltetrazine-Maleimide ●外观以及性质:红色固体,Methyltetrazine-Maleimide 是一种可降解 (cleavable) 的 ADC linker,可用于合成抗体偶联药物 (ADC)。其次是一种点击化学马…

【云原生 | 从零开始学Kubernetes】二十二、kubernetes持久化存储下

该篇文章已经被专栏《从零开始学k8s》收录 上一篇文章:kubernetes持久化存储上 点击跳转 持久化存储下k8s 持久化存储:hostPathk8s 持久化存储:nfsk8s 持久化存储: PVCk8s PV 是什么?k8s PVC 是什么?k8s PV…

【Docker】简单搭建Portainer

既然是家用的Docker那就不上Rancher了,直接通过Portainer轻量化解决所有问题。还好最新的Portainer还是很人性化的,搭建也比较简单,说白了原理就是直接通过宿主机的Docker进行同调(这个可以通过下面的启动语句得知)。 …

MySQL数据库之进阶查询语句

目录 一、常用查询 1、按关键字查询 ①升序排序 ②降序排序 ③结合where进行条件过滤 ④多字段排序 2、and和or判断 ①and和or的使用 ②嵌套、多条件使用 3、distinct 查询不重复记录 4、group by 对结果进行分组 5、limit限制结果条目 6、设置别名&#xff…