组合/聚合复用原则

组合/聚合复用原则(Composite/Aggregate Reuse Principle)是面向对象设计原则的一种。组合/聚合复用原则是指尽量使用组合/聚合,不要使用类继承。在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新对象通过向这些对象的委派达到复用已有功能的目的。就是说要尽量的使用合成和聚合,而不是继承关系达到复用的目的。

组合/聚合复用原则是什么

  • 尽量采用组合(contains-a)、聚合(has-a)的方式而不是继承(is-a)的关系来达到软件的复用目的

假如新对象的一些功能在其他已经创建好的对象里面已经实现,那么应该尽可能使用其他对象提供的功能,使之成为新对象的一部分,而不要再重新创建。

组合/聚合的优点:类相互间的耦合度比较低,一个类的变动对别的类造成的影响较为少,组合/聚合的缺点:类的数量增多实现起来较为复杂

组合/聚合复用原则好处

  • 可以降低类与类之间的耦合程度
  • 提高了系统的灵活性

组合/聚合复用原则例子

    public void talk(String name) {
        System.out.println(name + " say hello");
    }
    public void walk(String name) {
        System.out.println(name + " move");
    }
}

public class Manager extends Person {
}

public class Employee extends Person {
}

根据组合/聚合复用原则大家需要首选组合,然后才能是继承,使用继承时需要严格的遵守里氏替换原则,务必满足“Is-A”的关系是才可以使用继承,而组合却是一种“Has-A”的关系。

由上面的代码能够看出,Manager和Employee继承了Person,但实际上每一个不同的职位具有不同的角色,如果大家填加了角色这个类,那麼继续使用继承的话只能使每个人只能具有一种角色,这显然是不科学的。

原文地址:https://www.cnblogs.com/numpycomcn/p/11785139.html

时间: 2024-11-09 02:12:57

组合/聚合复用原则的相关文章

面向对象设计原则九:组合/聚合复用原则

组合/聚合复用原则(LSP) 定义:优先使用组合,使系统更灵活,其次才考虑继承,达到复用的目的.重用的方式: 继承.组合.聚合解释说明: 继承:在我们想复用代码时,我们一般会优先想到继承,但是具有继承关系的两个类是耦合度最高的两个类.(父类改了子类可能会受影响,子类改了父类也可能会受影响) 如果父类的功能比较稳定,建议使用继承来实现代码复用,因为继承是静态定义的,在运行时无法动态调用. 组合:是整体与部分的关系,整体离不开部分,部分离开了整体没有意义,如飞机翅膀与飞机的关系. 聚合:也是整体与部

面向对象设计原则之六:组合/聚集复用原则

组合/聚合复用原则(Composite/Aggregate Reuse Principle CARP).组合和聚合都是对象建模中关联(Association)关系的一种.聚合表示整体与部分的关系,表示"含有",整体由部分组合而成,部分可以脱离整体作为一个独立的个体存在.组合则是一种更强的聚合,部分组成整体,而且不可分割,部分不能脱离整体而单独存在.在合成关系中,部分和整体的生命周期一样,组合的新的对象完全支配其组成部分,包括他们的创建和销毁.一个合成关系中成分对象是不能与另外一个合成关

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

组合/聚合复用原则(Composite/Aggregate Reuse Principle或CARP),就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新对象通过向这些对象的委派达到复用已有功能的目的.这两种都是关联关系的一种,聚合表示整体与部分的关系,部分可以脱离整体作为独立个体存在:组合是一种更强的聚合,部分组成整体,但部分不可作为独立个体单独存在,部分的生命周期不能超过整体的生命周期.聚合好比电脑与鼠标,组合好比人与心脏. 组合/聚合与继承是实现复用的两个基本途径,继承复

大话设计模式笔记 合成/聚合复用原则

合成/聚合复用原则,尽量使用合成/聚合,尽量不要使用类继承. 聚合(Aggregation)表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象但B对象不是A对象的一部分. 合成(Composition)则是一种强的'拥有'关系,体现了严格的部分和整体关系,部分和整体的生命周期一样. 优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上,这样类和类继承层次会保持较小规模,而且不太可能增长为不可控制的庞然大物. 继承是一种强耦合的结构.子类随父类改变而改变,一定要在是‘is-

设计模式六大原则——合成/聚合复用原则(CARP)

1.定义 简而言之,对于合成/聚合复用原则的定义就是:要尽量使用合成和聚合,尽量不要使用继承. 2.释义 为什么"要尽量使用合成和聚合,尽量不要使用继承"呢? 这是因为: 第一,继承复用破坏包装,它把父类的实现细节直接暴露给了子类,这违背了信息隐藏的原则: 第二:如果父类发生了改变,那么子类也要发生相应的改变,这就直接导致了类与类之间的高耦合,不利于类的扩展.复用.维护等,也带来了系统僵硬和脆弱的设计.而用合成和聚合的时候新对象和已有对象的交互往往是通过接口或者抽象类进行的,就可以很好

合成/聚合复用原则,桥接模式

问题: 方式一, 方式二, 存在问题: 继承带来的麻烦,无论是哪种方式,一旦功能增多.品牌增多,增长不可控的无限变大.增加一个品牌,增加m个软件类+1个品牌类:增加一个软件,增加n(品牌个数)软件个类. 对象的继承关系在编译时就定义好了,所以无法在运行时改变从父类继承的实现. 子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化. 当需要复用子类时.如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换.这种依赖关系限制了灵活性,并最终限

合成/聚合复用原则

合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承. 合成和聚合都是关联的特殊种类.聚合表示一种弱的'拥有'关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分; 合成则是一种强的'拥有'关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样. 合成/聚合复用原则的好处是:优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上.这样类和类继承层次会保持较小规模,并且不太可能增在为不可控制的庞然大物. 原文地址:https://www.cnblogs.co

面向对象设计原则之合成复用原则

合成复用原则又称为组合/聚合复用原则(Composition/Aggregate Reuse Principle, CARP),其定义如下: 合成复用原则(Composite Reuse Principle, CRP):尽量使用对象组合,而不是继承来达到复用的目的. 合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分:新对象通过委派调用已有对象的方法达到复用功能的目的.简言之:复用时要尽量使用组合/聚合关系(关联关系),少用继承.

设计模式之合成/聚合利用原则(CARP)

一.概念 CARP:CompositionAggregation Principle 合成聚合复用原则,尽量使用合成/聚合,尽量不使用类继承.合成聚合是"has  a"的关系,而继承是"is  a"的关系.由于继承是一中强耦合的结构,父类变,子类必变.所以不是"is  a"关系,我们一般不要用继承.优先使用合成聚合复用原则,有助于保持每个类的封装,降低继承的层次.合成/聚合复用原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分: