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

合成/聚合复用原则

发布时间:2020-12-14 05:18:51 所属栏目:百科 来源:网络整理
导读:合成/聚集复用原则 一:合成/聚合复用原则 ?? 尽量使用合成/聚合,尽量不要使用类继承 ? ?二:什么是合成? 合成表示一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样,打个比方:人有两个胳膊,胳膊和人 就是部分和整 体的关系,

合成/聚集复用原则

 一:合成/聚合复用原则

   ??尽量使用合成/聚合,尽量不要使用类继承

? ?二:什么是合成?

合成表示一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样,打个比方:人有两个胳膊,胳膊和人 就是部分和整 体的关系,人去世了,那么胳膊也就没用了,也就是说胳膊和人的生命周期是相同的

合成关系用实心的菱形+实线来表示

? ?三:什么是聚合?

聚合表示一种弱的拥有关系,体现的是A对象可以包含B对象,但是B对象并不是A对象的一部分,打个比方:人是群居动物,所以每个人属于一 个人群,一个人群可以有多个人,所以人群和人是聚合的关系

? ?四:合成/聚合复用原则结构图

1和2以及n,被称为基数,表示这一端的类可以有几个实例,很显然,一个人有两个胳膊,如果一个类可能有无数个实例,则用n表示,一人群 可能有无数个人

  


? ? ? 五:只有当以下的条件全部被满足时,才应当使用继承关系。

???????? 1. 子类是超类的一个特殊种类,而不是超类的一个角色,也就是区分“Has-A”和“Is-A”.只有“Is-A”关系才符合继承关系,“Has-A”关系应当使用聚合来描述。

???????? 2 .永远不会出现需要将子类换成另外一个类的子类的情况。如果不能肯定将来是否会变成另外一个子类的话,就不要使用继承。

???????? 3 .子类具有扩展超类的责任,而不是具有置换掉或注销掉超类的责任。如果一个子类需要大量的置换掉超类的行为,那么这个类就不应该是这个超类的子类。

???? 错误的使用继承而不是合成/聚合的一个常见原因是错误地把“Has-A”当成了“Is-A”.”Is-A”代表一个类是另外一个类的一种;而“Has-A”代表一个类是另外一个类的一个角色,而不是另外一个类的特殊种类。

???? 我们需要办理一张银行卡,如果银行卡默认都拥有了存款、取款和透支的功能,那么我们办理的卡都将具有这个功能,此时使用了继承关系:

?

??????????????????????????????????????????????????????????????????

为了灵活地拥有各种功能,此时可以分别设立储蓄卡和信用卡两种,并有银行卡来对它们进行聚合使用。此时采用了合成复用原则:

?????????????????

?????????????????????????????????             


本文是对以下链接的加工:

http://www.cnblogs.com/menglin2010/archive/2012/04/09/2435785.html

http://www.cnblogs.com/shaosks/archive/2012/02/08/2342593.html

(编辑:李大同)

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

    推荐文章
      热点阅读