这几天在看netty的源码想根据源码把netty的UML架构图跟时序图画出来,所以就复习了一下大学时代的一些UML基础知识,首先,我们要搞清楚以下几个概念:
继承:这个就不要多说了,写过java代码的人一般都很容易理解继承这个概念。
实现:这个可能有些初学者有些模糊,因为大家一般会认为实现跟继承是一样的概念,在java里面 继承使用的关键字是extends而实现使用的关键字是implements。说到这里我想大家都明白了吧。
关联:我们一样去百度百科里面找一下关联的概念:把两个或两个以上在意义上有密切联系的句子组合在一起,叫复句,也叫关联句。
组合:组合,汉语词语,既可以作为名词又可以作为动词使用。作为名词,指由几个部分或个体结合成的整体;作为动词,是指组织成整体。
聚合:聚合,指分散的聚集到一起。在化学中它指有机化学和高分子化学的重要术语。在网络用语中指对互联网各种信息的集合。
以上关于继承跟实现可能大家理解起来比较简单一点,那么我们如何理解依赖,关联,组合,聚合的关系呢?
首先,从语义上理解:
关联关注的是密切联系,而依赖没有这个特点,因此关联一般是长期的且双方关系是平等的,具体的实现方式表现在:类全局变量的形式出现,并且关联可以是双向的。组合,从字面上理解是关联关系的一种,不过他更强调的是组合后的整体,即几个组件组合之后跟整体是不可分割的,如何创建,生命周期等都有整体来控制不受外界的干扰:具体表现在:类全局变量的形式出现,但是这个全局变量的创建不由外部决定。聚合指的是原本分散的东西聚集到一起,就是说东西原本就是存在的,只是通过一个组件把各个组件聚集到一起,而新的组件不负责其他组件的创建生命周期等的管理。另外,聚合也是关联的一种,从字面上理解关联更强调的是把密切联系,而聚合可能不太注重那一点:聚合具体表现在:方法中的参数。因此总的来说关联,依赖,组合,聚合,这几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖。
本文出自 “陈砚羲” 博客,请务必保留此出处http://www.jb51.cc/article/p-hjlayxwi-bgm.html