`
hibernater
  • 浏览: 134363 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

合成/聚合复用原则 (CARP)

阅读更多

转自:moon1128

http://blog.csdn.net/moon1128/archive/2005/01/08/245435.aspx

 

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

简短的表述:要尽量使用合成 / 聚合,尽量不要使用继承。

 

合成和聚合都是关联的特殊种类。聚合用来表示“ has-a ”关系或者整体与部分的关系,而合成则用来表示一种强的多得“ has-a ”关系。在一个合成关系里,部分和整体的生命周期是一样的。一个对象在同一个时间内只能属于一个合成关系,一个合成关系中的成分对象是不能与另一个合成关系共享的。

这种复用是黑盒复用

 

继承复用通过扩展一个已有对象的实现来得到新的功能。

继承复用破坏包装,因为继承将超类的实现细节暴露给子类。

这种复用是白盒复用

如果超类的实现发生改变,那么子类的实现也不得不发生改变的。

 

Is-A ”是严格的分类学意义上的定义,意思是一个类是另一个类的“一种”。

Has-A ”是表示某一个角色具有某一项责任。

继承是“ Is-A ”关系。合成 / 聚合是“ Has-A ”关系。

 

分享到:
评论

相关推荐

    java 设计模式与Jar库

    java 设计模式与Jar库 里氏代换原则LSP 依赖倒转原则DIP 接口隔离原则ISP 合成/聚合复用原则CARP

    SQL语句优化2

    开-闭原则(OCP):一个软件实体应当对扩展开放,对修改关闭。 ...合成/聚合复用原则(CARP):要尽量使用合成/聚合,尽量不要使用继承。 迪米特法则(LoD):一个对象应当对其他对象有尽可能少的了解

    面向对象六大设计原则

    1、“开-闭”原则(Open-Closed Principle,OCP) 2、里氏替换原则(Liskov Substitution Principle,LSP...5、合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP) 6、迪米特法则(Law of Demeter,LoD)

    设计模式,软件开发者必读

    1.5.5 合成/聚合复用原则(CARP) 9 1.5.6 迪米特法则(LAW OF DEMETER LOD) 10 1.5.7 单一职责原则(SIMPLE RESPONSIBILITY PINCIPLE SRP) 10 创建型模式 11 2.1 SINGLETON单件模式 11 2.1.1 典型的SINGLETON类 11 ...

    JAVA与模式

    Java接口 com.javapatterns.liskov 里氏代换原则 com.javapatterns.dip 依赖倒转原则 com.javapatterns.isp 接口隔离原则 com.javapatterns.carp 组合/聚合复用原则 com.javapatterns.lod ...

    源码:阎宏设计模式光盘

    com.javapatterns.carp 组合/聚合复用原则 com.javapatterns.chainofresp 责任链模式 com.javapatterns.chainofresp.scheduler 专题:定时器与击鼓传花 com.javapatterns.command 命令模式 ...

    C#设计模式大全

    五、 合成/聚合复用原则(CARP) 六、 迪米特法则(LoD) C#设计模式(4)-Simple Factory Pattern 一、 简单工厂(Simple Factory)模式 二、 Simple Factory模式角色与结构: 三、 程序举例: 四、 Simple ...

    C#设计模式.PDF

    五、 合成/聚合复用原则(CARP) 21 六、 迪米特法则(LoD) 22 C#设计模式(4)-Simple Factory Pattern 24 一、 简单工厂(Simple Factory)模式 24 二、 Simple Factory模式角色与结构: 24 三、 程序举例: 25 ...

    CARP问题的元启发式算法综述

    CARP问题的元启发式算法综述,李庆华,李波,本文全面综述了国内外用于求解容量约束弧路径问题(CARP问题)及其变异形式的各种元启发式算法的研究现状,指出了元启发式算法的�

    论文研究-求解双层CARP优化问题的知识型遗传算法.pdf

    论文研究-求解双层CARP优化问题的知识型遗传算法.pdf, 双层CARP优化问题首先考虑物流系统的宏观配置问题,然后考虑相关服务的完成问题. 提出了一种求解双层CARP优化问题...

    Carp, 无需GC的静态类型的lisp,用于实时应用.zip

    Carp, 无需GC的静态类型的lisp,用于实时应用 警告这是一个研究项目,这里的大量信息可能会变得过时和误导,没有任何解释。 不要把它用于任何重要的东西 !更新(,26,2017 ): 总重写现在是活动的;如果你想查看旧...

    求解双层CARP优化问题的演化学习型遗传算法

    求解双层CARP优化问题的演化学习型遗传算法,邢立宁,,双层CARP(Capacitated Arc Routing Problem)优化问题的研究对象通常是某个城市或地区,首先聚焦于该地物流系统的宏观配置,然后考虑相关服务�

    perl-Carp-Clan-5.3-1.2.1.noarch.rpm

    Linux redhat5_4 postfix perl-Carp-Clan-5.3-1.2.1.noarch.rpm

    matlab_CARP协议路由协议

    matlab_CARP协议路由协议

    perl-Carp-1.26-244.el7.noarch.rpm

    离线安装包,亲测可用

    carp:也许只是另一个基础展示案例

    carp 鲤鱼 眼似真珠鳞似金,时时动浪出还沉。 河中得上龙门去,不叹江湖岁月深。 ##demo site there is a site available. 开发快速启动 application.yml配置好数据库链接(mysql) 启动AdminApplication或...

    Java与模式(含示例代码)

    第10 章 合成/聚合复用原则(CARP) ....... 115 10.1 合成和聚合的区别.....................115 10.2 复用的基本种类.........................115 10.3 从代码重构的角度理解.............117 第11 章 迪米特法则...

    pfsense-zabbix-template:pfSense的Zabbix模板

    CARP监控(全球CARP状态) 基本服务发现和监视(服务状态) pfSense版本/更新可用 包更新可用 模板pfSense活动:OpenVPN服务器用户身份验证 发现以用户身份验证模式连接到OpenVPN服务器的OpenVPN客户端 监视...

    perl-Carp-1.42-396.el8.noarch(1).rpm

    离线安装包,亲测可用

    perl-Carp-Clan-6.06-6.el8.noarch(1).rpm

    离线安装包,亲测可用

Global site tag (gtag.js) - Google Analytics