GoF之组合/聚合复用原则

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

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

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

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

复用

 优点

 缺点

合成/聚合

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

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

 这种复用支持包装;

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

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

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

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

继承

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

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

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

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

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

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


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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值