五种关系:
一般化关系、关联关系、聚合关系、合成关系、依赖关系。
一般化关系(Generalization)
表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。
关联关系(Association)
是类与类之间的联接,它使一个类知道另一个类的属性和方法。可以单向和双向。
聚合关系(Aggregation)
关联关系的一种,是强关联关系。表示整体和个体之间的关系。
合成关系(Composition)
关联关系的一种。比聚合关系更强。要求整体对象负责部分对象的生命周期。
依赖关系(Dependency)
类与类之间的联接,单向。表示一个类依赖于另一个类的定义。
关系图
为什么化这样是一个图呢,因为我觉得,这五种关系是升级的关系。
也及是说:如果是聚会关系了,一定已经包含链接关系了,如果已经是链接关系了,那么不可能没有依赖关系
定义关系 | 调用关系 | 后于自己创建 | 生命周期相同 | 先于自己创建 | |
依赖关系 | A(B b) | ||||
链接关系 | A(B b) | A{ b.fun()} | |||
聚会关系 | A(B b) | A{ b.fun()} | A{ B mb=null }
扫描二维码关注公众号,回复:
5914990 查看本文章
|
||
合成关系 | 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升级的依赖我们发现,关系越高越靠得住。
这也说明了,为什么设计时候几乎不用刻意的消除“聚会关系”关系以上是关系了。
其实就人与人直间的关系考虑,也是的,关系密切到一定的程度,关系反而简单了。
就这里聚合以上的关系我这里把他暂时定义为亲人的关系。
在亲人这个关系内处理问题是相对简单的,多密切都不会增加复杂度。
而链接和依赖这不同,因为可靠性降低了,所以导致了很多不确定性。
就社会而言,整个社会的复杂度增加也是在这个层面上。
那么这里我想,是不是觉得事情是否复杂的不是耦合度,而是可靠性?
这里暂时一想:我还没有深入的考虑这个问题。