`

第10章 合成/聚合复用原则(CSRP 笔记)

 
阅读更多
合成/聚合复用原则  就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。
       另一个更简短的表述:要尽量使用合成/聚合,尽量不要使用继承。
合成和聚合的区别
       合成和聚合均是关联的特殊种类。聚合用来表示“拥有”关系或者整体与部分的关系;而合成则用来表示一种强得多的“拥有”关系。在一个合成关系里,部分和整体的生命周期是一样的。一个合成的新的对象完全拥有对其组成部分的支配权,包括它们的创建和销毁等。使用程序语言的术语来讲,组合而成的新对象对组成部分的内存分配、内存释放有绝对的责任。
合成/聚合复用的好处:
1、新对象存取成分对象的唯一方法是通过成分对象的接口。
2、对这种复用是黑箱复用,因为成分对象的内部细节是新对象所看不见的。
3、这种复用支持包装。
4、这种复用所需的依赖较少。
5、每一个新的类可以将焦点集中在一个任务上。
6、这种复用可以在运行时间内动态进行,新对象可以动态地引用于成分对象类型相同的对象。
这个复用也是有缺点。其中主要的缺点:是通过使用这种复用建造的系统会有较多的对象需要管理。
继承复用的优点
利用继承关系达到复用的做法有下面的优点:
1、新的实现较为容易,因为超类的大部分功能可以通过继承关系自动进入子类。
2、修改或扩展继承而来的实现较为容易。
继承复用的缺点
1、继承复用破环包装,因为继承将超类的实现细节暴露给子类。由于超类的内部细节常常是对子类透明的,因此这种复用是透明的复用,又称‘白箱’复用。
2、如果超类的实现发生变化,那么子类的实现也不得不发生变化。因此当一个基类发生改变时,这种改变会先像水中投入石子引起来的水波一样,将变化一圈又一圈地传导到一级又一级的子类,使设计师不得不相应地改变这些子类,以适应超类的变化。
3、从超类继承而来的实现是静态的,不可能在运行时间内发生改变,因此没有足够的灵活性。




与里氏代换原则联合使用
里氏代换原则是继承复用的基石。如果在任何使用B类的地方都可以使用S类型,那么S类型才能称为B类型的子类型,而B类型才可以称为S类型的基类型。
java语言API中的例子
在java语言API中,有几个明显违反这样原则的例子,其中最为著名的就是Stack和Properties。前者被不当地设置为Vector的子类。而Properties被不恰当地设置成Hashtable的子类。
Properties的对象p。p.getProperties(key)与p.get(key)会给出不同的结果。
  • 大小: 9.1 KB
分享到:
评论

相关推荐

    CSRP-官方

    CSRP-官方

    CS5532_gpio例程.rar

    uint8_t CSRP :3; // bit5:3 这些位作为指针指向通道设置寄存器,单次或连续转换都根 // 据此指针所指向的通道设置寄存器的内容执行。 uint8_t MC :1; // bit6 0 执行完全稳定的单次转换 // 1 执行连续转换 ...

    macml:csrp 与 macml

    同时,提到的"csrp"可能指的是协同过滤(Collaborative Filtering)中的用户相似度计算方法——Cosine Similarity Rating Prediction。以下是这两个概念的详细解释: **MacML** MacML是为了解决在苹果操作系统上...

    SIM5215 AT指令集 最新版

    #### AT+CCINFO / AT+CSCHN / AT+CSRP / AT+CRUS 这些指令涉及网络信息查询、频道扫描、信号报告和注册状态更新,有助于监控模块在网络中的状态。 #### AT+CCLK 用于设置和查询日期时间,支持多种格式,确保模块...

    VFP教程答案

    ### 第一章 数据库基础知识 #### 选择题 通过给出的选择题答案可以看出本章节涉及到了数据库管理系统的基础概念: - **DBMS**:Database Management System,即数据库管理系统,用于管理和维护数据库的软件系统。 -...

    端口扫描器(scanport)

    端口扫描是网络安全领域中的一个重要概念,主要用于检测网络上的设备开放了哪些端口,以便评估潜在的安全风险。本文将深入探讨“端口扫描器(scanport)”这一工具,包括其工作原理、多线程扫描的优势以及如何进行...

    SIM5218_AT指令集1.21

    - **AT+CSRP**:信号强度报告。 - **AT+CRUS**:重置模块。 - **AT+CCLK**:设置或查询当前时间。 - **AT+FSCD**:文件系统操作命令。 - **AT+FSMEM**:查询文件系统可用空间。 - **AT+FSFMT**:格式化文件...

    猪2号染色体MYOD1区域的 RH定位和连锁定位 (2009年)

    - **基因排列顺序**:研究表明,这五个基因在猪2号染色体上的排列顺序为:MYOD1(75.2 cM)- LDHA(79 cM)-CSRP3(83.8 cM)-TEF-1(86.5 cM)-COPB1(90 cM)。 - **与其他物种的比较**:猪与小鼠在这五个基因的排列顺序上...

    SIM5218 AT指令集

    #### 6.12 AT+CSRP 设置或查询信号强度报告。 - **参数说明**: - `<interval>`:报告间隔。 #### 6.13 AT+CRUS 查询当前注册状态。 - **无参数**。 #### 6.14 AT+CCLK 设置或查询时间格式。 - **参数说明**: -...

    习题-信息系统与数据库(1).doc

    A.MRP(物料需求计划系统) B.MRP (制造资源计划系统) C.ERP(企业资源计划系统) D.CSRP(客户同步资源计划系统) 12. 信息系统在交付使用之前要进行测试,依次进行的是___C_____。 A. 模块测试、系统测试、整机...

Global site tag (gtag.js) - Google Analytics