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

GoF之组合/聚合复用原则

发布时间:2020-12-13 22:46:33 所属栏目:百科 来源:网络整理
导读:在学习UML的时候就接触过组合/聚合的概念,它们是整体-部分的关系,只是关系的强弱不同,聚合是一种弱的”拥有“关系;组合是一种强的”拥有“关系。经过下面的一些介绍,对于组合/聚合复用原则有个认识,并且知道它们的使用场合。 组合/聚合复用原则 ( Com

在学习UML的时候就接触过组合/聚合的概念,它们是整体-部分的关系,只是关系的强弱不同,聚合是一种弱的”拥有“关系;组合是一种强的”拥有“关系。经过下面的一些介绍,对于组合/聚合复用原则有个认识,并且知道它们的使用场合。

组合/聚合复用原则Composition/AggregationPrinciple

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

其实这里最终要的地方就是区分“has-a”和“is-a”的区别。继承虽好,可以实现父类代码的复用,但是相对于合成和聚合,继承的缺点在于:父类的方法全部暴露给子类。父类如果发生变化,子类也得发生变化。聚合的复用的时候就对另外的类依赖的比较的少。。

复用

优点

缺点

合成/聚合

1、新对象存取成员对象的唯一方法是通过成员对象的接口;

2、是黑箱复用,因为成员对象的内部细节是新对象所看不见的;

这种复用支持包装;

3、复用所需的依赖较少;

4、每一个新的类可以将焦点集中在一个任务上;

5、可以在运行时动态进行,新对象可以使用合成/聚合关系将新的责任委派到合适的对象。

通过这种方式复用建造的系统会有较多的对象需要管理

继承

1、新的实现较为容易,因为基类的大部分功能可以通过继承关系自动进入派生类;

2、修改或扩展,继承而来的实现较为容易。

1、继承复用破坏包装,因为继承将基类的实现细节暴露给派生类,这种复用也称为白箱复用;

2、如果基类的实现发生改变,那么派生类的实现也不得不发生改变;

3、从基类继承而来的实现是静态的,不可能在运行时发生改变,不够灵活。

对比两种关系的优缺点,并不能说明哪一种好哪一种不好,只能在实际情况中,设计人员进行判断到底使用哪一种耦合关系。


这是第五个原则了,后面是一个法则,而且我会有比较有意思的例子说明,敬请期待。。。

(编辑:李大同)

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

    推荐文章
      热点阅读