首页 > 代码库 > UML依赖,关联,组合,聚合,继承,实现的关系

UML依赖,关联,组合,聚合,继承,实现的关系

    这几天在看netty的源码想根据源码把netty的UML架构图跟时序图画出来,所以就复习了一下大学时代的一些UML基础知识,首先,我们要搞清楚以下几个概念:


  • 继承:这个就不要多说了,写过java代码的人一般都很容易理解继承这个概念。

  • 实现:这个可能有些初学者有些模糊,因为大家一般会认为实现跟继承是一样的概念,在java里面 继承使用的关键字是extends而实现使用的关键字是implements。说到这里我想大家都明白了吧。

  • 依赖:在理解这个概念之前我们先去百度百科里面看一下依赖的中文解释:依靠别人或事物而不能自立或自给。俗称成瘾。

  • 关联:我们一样去百度百科里面找一下关联的概念:把两个或两个以上在意义上有密切联系的句子组合在一起,叫复句,也叫关联句。

  • 组合:组合,汉语词语,既可以作为名词又可以作为动词使用。作为名词,指由几个部分或个体结合成的整体;作为动词,是指组织成整体。

  • 聚合:聚合,指分散的聚集到一起。在化学中它指有机化学和高分子化学的重要术语。在网络用语中指对互联网各种信息的集合。


以上关于继承跟实现可能大家理解起来比较简单一点,那么我们如何理解依赖,关联,组合,聚合的关系呢?

首先,从语义上理解:

  • 依赖需要的功能自己不能实现需要从外部引进相关类来完成相关功能,具体实现方式在:方法局部变量, 方法中的参数, 和对静态方法的调用。另外,依赖关系总是单向的。

关联关注的是密切联系,而依赖没有这个特点,因此关联一般是长期的且双方关系是平等的,具体的实现方式表现在:类全局变量的形式出现,并且关联可以是双向的。组合,从字面上理解是关联关系的一种,不过他更强调的是组合后的整体,即几个组件组合之后跟整体是不可分割的,如何创建,生命周期等都有整体来控制不受外界的干扰:具体表现在:类全局变量的形式出现,但是这个全局变量的创建不由外部决定。聚合指的是原本分散的东西聚集到一起,就是说东西原本就是存在的,只是通过一个组件把各个组件聚集到一起,而新的组件不负责其他组件的创建生命周期等的管理。另外,聚合也是关联的一种,从字面上理解关联更强调的是把密切联系,而聚合可能不太注重那一点:聚合具体表现在:方法中的参数。


因此总的来说关联,依赖,组合,聚合,这几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖




本文出自 “陈砚羲” 博客,请务必保留此出处http://chenyanxi.blog.51cto.com/4599355/1531253