面向对象五关系深入分析

五种关系:
一般化关系、关联关系、聚合关系、合成关系、依赖关系。

一般化关系(Generalization)
表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。

关联关系(Association)
是类与类之间的联接,它使一个类知道另一个类的属性和方法。可以单向和双向。

聚合关系(Aggregation)
关联关系的一种,是强关联关系。表示整体和个体之间的关系。

合成关系(Composition)
关联关系的一种。比聚合关系更强。要求整体对象负责部分对象的生命周期。

依赖关系(Dependency)
类与类之间的联接,单向。表示一个类依赖于另一个类的定义。

关系图

为什么化这样是一个图呢,因为我觉得,这五种关系是升级的关系。

也及是说:如果是聚会关系了,一定已经包含链接关系了,如果已经是链接关系了,那么不可能没有依赖关系

  定义关系 调用关系 后于自己创建 生命周期相同 先于自己创建
依赖关系 A(B b)        
链接关系 A(B b) A{ b.fun()}      
聚会关系 A(B b) A{ b.fun()}

A{ B mb=null }

   
合成关系 A(B b) A{ b.fun()} A{ B mb=null } A{ B mb=new B() }  
继承关系

A(B b)

b=super

A{ b.fun()}

b = super

A{ B mb=null }

b = super

A{ B mb=new B() }

b = super

super(B).fun()

b = super

上面这表是从升级的角度对5种关系做了一下分析。

我不多说的,应该很容易理解。

但是在分析这个的过程中我 有发现了一个问题

A对B依赖的升级和生命周期的关系

定义关系:A先于B

调用关系:A先于B

聚合关系:A先于B

组合关系:A==B

继承关系:B先于A

有A对于B升级的依赖我们发现,关系越高越靠得住。

这也说明了,为什么设计时候几乎不用刻意的消除“聚会关系”关系以上是关系了。

其实就人与人直间的关系考虑,也是的,关系密切到一定的程度,关系反而简单了。

就这里聚合以上的关系我这里把他暂时定义为亲人的关系。

在亲人这个关系内处理问题是相对简单的,多密切都不会增加复杂度。

而链接和依赖这不同,因为可靠性降低了,所以导致了很多不确定性。

就社会而言,整个社会的复杂度增加也是在这个层面上。

那么这里我想,是不是觉得事情是否复杂的不是耦合度,而是可靠性?

这里暂时一想:我还没有深入的考虑这个问题。

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/89209490