加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

合成聚合复用原则

发布时间:2020-12-13 22:36:02 所属栏目:百科 来源:网络整理
导读:合成聚合复用原则,也叫合成复用原则。 合成聚合复用原则就是在一个新的对象里面使用一些已有的对象,使之成为新的对象的一部分,新的对象通过向这些对象的委派达到复用已有功能的目的。 更简短的描述就是:要尽量使用合成聚合,尽量不要使用继承。 合成和聚

合成聚合复用原则,也叫合成复用原则。

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

更简短的描述就是:要尽量使用合成聚合,尽量不要使用继承。


合成和聚合的关系:

聚合表示拥有关系或者整体和部分的关系。合成表示表示一种更强的拥有关系,合成的对象完全支配其组成部分。

合成聚合复用的优点:

  • 新对象存取成分对象的唯一方法是通过成分对象的接口。
  • 这种复用是黑箱复用,新对象看不见成分对象的内部细节。
  • 这种复用支持包装。
  • 这种复用所需的依赖较小。
  • 每一个新的类可以将焦点集中在一个任务上。
  • 这种复用可以在运行时间内动态进行,新对象可以动态的引用与成分对象类型相同的对象。

合成聚合复用的缺点:建造的系统会有更多的对象需要管理。


is-a和has-a:

继承是面向对象的语言特有的复用工具,继承复用通过扩展一个已知对象的实现来得到新的功能,基类拥有共同的属性和方法,而子类通过增加新的属性和方法来扩展超类的实现。

继承的优点:

  • 新的实现较为容易,因为超类的大部分功能可以通过继承关系自动进入子类。
  • 修改或扩展继承而来的实现较为容易。

继承的缺点:

  • 继承破坏包装,因为继承将超类的实现细节暴漏给了子类。
  • 如果超类的实现发生改变,那子类的实现也不得不改变。
  • 从超类继承而来的实现时静态的,不可能再运行时间内发生改变,缺乏灵活性。


猫和狗都是动物,可以同时继承动物类,实现动物的属性和方法,当然也可以使用合成聚合。但猫只能是猫,不能是狗。


清洁工和维修工都是工人,可以同时继承工人类。如果使用继承的话,那么一个人是清洁工,就只能是清洁工不能维修工,不能转行了或者身兼数职,显然是不合理的,使用合成聚合就能很好的解决这个矛盾。

对违反里氏代换原则的设计进行重购时,有两种方法:一是加入一个抽象超类。二是将继承改为合成/聚合的关系。

在复用时应优先考虑使用合成聚合而不是继承,而判定的判断为以下四个Coad条件:

  • 派生类是基类的一个特殊种类,而不是基类的一个角色,即要分清"Has-A"和"Is-A"的区别
  • 永远不会出现需要将派生类换成另一个类的派生类的情况
  • 派生类具有扩展基类的责任,而不是具有置换或者注销掉基类的责任
  • 只有在分类学角度有意义时,才可以使用继承

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读