} } }

    JAVA进修之:类与类之间的关系

    添加时间:2013-6-19 点击量:

    类与类之间的关系



    持续(inheritance)


    持续指的是一个类(称为子类、子接口)持续别的的一个类(称为父类、父接口)的功能,并可以增长它本身的新功能的才能。


    持续是is-a的关系,是一种用于默示特别与一般的关系。


    若是说XXX是XXX,没人鄙夷你的话,持续关系就成立了,如:


     


     


    汉子是人,说得通。


    如果反过来,人是汉子,这世界就乱了。



    实现(implement)


    指的是一个类实现接口的功能。


     



    依附(dependence)


    简单的懂得,就是类A应用到了类B,而这种应用关系是具有无意性的、姑且性的、很是弱的,然则类B的变更会影响到类A。


    比如或人要过河,须要借用一条船,此时人与船之间的关系就是依附。


    发挥解析在代码层面,为类B作为参数被类A在某个办法中应用。如:


     



    接洽关系


    接洽关系表现的是两个类,或者类与接口之间语义级此外一种强依附关系,比如我和我的伴侣。这种关系比依附更强,不存在依附关系的无意性,关系也不是姑且性的,一般是长久性的,并且两边的关系一般是一律的,接洽关系可所以单向或者双向的。发挥解析在代码层面,为被接洽关系类B以类属性的情势呈如今接洽关系类A中,也可能是接洽关系类A引用了一个类型为被接洽关系类B的全局变量。


     




    聚合(aggregation)


    凑集是接洽关系关系的一种特例,它表现的是整体与项目组,是拥有的关系,即has-a的关系。


    此时整体与项目组之间是可分别的,它们可以具有各自的生命周期,项目组可以属于多个整体的对象,也可认为多个整体对象共享,比如球员与球队、锻练与球队的关系。


    发挥解析在代码层面,和接洽关系关系是一致的,只能从语义级别来区分。


     


                         


    怎么懂得呢?


    所谓整体与项目组,小贝是球队A人一项目组,没错吧。


    但同时,小贝是不是也可所以其它球队或机构的一分子呢?答案是必然的。



    组合


    组合也是接洽关系关系的一种特例,它表现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。


    它同样表现整体与项目组间的关系,但此时整体与项目组是不成分的,整体的生命周期停止也就意味着项目组的生命周期停止,比如小贝和他的飞毛腿。发挥解析在代码层面,和接洽关系关系是一致的,只能从语义级别来区分。


     



    聚合,XXX是XXX的一项目组。


    组合,XXX是XXX必不成少的一项目组,是聚合的加强版。



    总结


    对于持续、实现这两种关系没几许疑问,它们表现的是一种类与类,或者类与接口间的纵向关系。


    其它的四者关系则表现的是类与类,或者类与接口间的引用,是横向关系,是斗劲难区分的。有很多事物间的关系要想筹办定位是很难的,前面也提到,这几种关系都是语义级此外,所以从代码层面并不克不及完全区分各类关系。


    但总的来说,后几种关系所发挥解析的强弱程度依次为:组合>聚合>接洽关系>依附。


    彼此相爱,却不要让爱成了束缚:不如让它成为涌动的大海,两岸乃是你们的灵魂。互斟满杯,却不要同饮一杯。相赠面包,却不要共食一个。一起歌舞欢喜,却依然各自独立,相互交心,却不是让对方收藏。因为唯有生命之手,方能收容你们的心。站在一起却不要过于靠近。—— 纪伯伦《先知》
    分享到: