面向对象之类间的关系

类之间关系

1、 关联

两个类之间有联系,但是这种联系很轻,不是很直接,就像有三个人A、B、C,其中A和C相互不认识,但是他们都认识B,那么A和C就有了关联。如果需要,A和C就可以通过B认识,但是当前他们都没有认识对方的必要(以后说不定会有需要)。对应到面向对象程序设计当中,就好像类A和类C通过一个B(类)属性相关联。

书中的一个例子就是;公司和员工签订了劳动合同,那么员工类和公司类就通过合同类建立了一份联系。

个人感觉关联所对应的联系很轻。它确实存在,但是与A和C的主要职责关系不是很大:A完成它的职责几乎用不到和C建立的这份关系,那么这份关系有什么用呢?既然建立关系,那么必然是有用的,只是和主要职责关系不大。就像上面的例子,如果有一天员工和公司发生了薪酬矛盾,那么合同类就有用了,但是员工和公司的主要职责并不是发生矛盾吧。

2、 依赖

依赖是比关联更强、更紧密的一种关系。由客户类指向提供商类,即如果A依赖B,那么就画一条从A到B的虚线实箭头。
那么在什么情况下A就依赖了B呢?或者说依赖的形式与定义是什么呢?答案是:如果A使用了B提供的服务,那么A就依赖B了

这里的服务包括:

  1. 方法调用:在A的方法内调用B的方法;
  2. 数据依赖:A类使用了B类的属性或数据;
  3. 对象依赖:A生成了B的对象,并将其返回给其他类。

依赖比关联更强、更紧密的地方就体现在如果A依赖B,那么在A履行职责的过程中需要B提供帮助——无论是属性上的帮助还是方法上的帮助,所以这层关系相对于关联就显得更加直接了。

3、 组合与聚合

组合与聚合都是一种“整体与部分”的关系。比如汽车与车轮的关系就是“整体与部分”的关系,而汽车和马路的关系就是关联的关系(汽车的职责是行驶,而马路相当于汽车执行职责的一个场景)。

聚合:类A的属性包含一个类B对象,但是A不负责创建B的对象,两个类的生命周期不同,整体消失后(A销毁后),部分还可以存在(B的对象还存在),因为A不负责B的创建,自然也不影响B的消亡。

书中的例子是汽车与车轮就是一种聚合的关系,汽车不负责自己生产车轮,而且汽车由于其他原因坏了后(汽车类消亡)车轮还可以给其他车用(车轮类将继续存在)。

组合:类A的属性包含一个类B对象,而且因为A负责创建B的对象,所以当A消亡后B也自然而然的消亡。

书中的例子是大树与树叶、树枝就是一种组合关系,树的生长伴随着树枝和树叶的生长,树的死亡意味着树叶的死亡。

4、实现

实现包括:

  1. 实现接口——成为符合某一标准、具备某一功能的一个类或者接口;
  2. 实现抽象类的方法——成为具备某种特性的类;

个人觉得,接口表示一种功能,实现接口表示一个类具备了这一功能;而实现抽象类方法的过程是一种在获得一种功能的同时也获得了一种身份——毕竟,抽象类也是类,也是相似事物的统称,而接口毕竟只是一组交互的相关功能点定义的集合。(为什么这么说呢?答案在这里~)

最后,欢迎大家批评指正~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值