对象之间的关系

下面以对象间的耦合度和关系的强弱性的由低到高进行描述:

 

依赖:(Dependency)对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。

 

 

 

图  依赖关系

 

 

 

      1) 就是一个对象调用被依赖对象中的某些方法而得以完成这个对象的一些职责
      2) 这是一种比较松散的关系 , 并且这是短期的. 我们的过程与对象往往依赖于我们的实体域对象
      3) 如: WebWork中的Action 依赖于 业务层中的方法 ,  业务层中的Service或者Bussiness依赖于持久层(DAO)中的方法等等 ( 如果碰到这种关系 , 通常用面向接口编程的方法来处理, 使其具有更好的扩展性, 维护性)
关联:(Association)对象之间一种引用关系,比如客户类与订单类之间的关系。这种关系通常使用类的属性表达。指一个类指到另一个类中的属性. 而且是长期的 (不带有包含关系的关联)

      一对一、一对多、多对多
      class A{
         private B b;
      }
      class B{
         private A a;
      }

聚合(又聚集):(Aggregation)表示has-a的关系,是一种不稳定的包含关系。聚合类不必对被聚合类负责。使用集合属性表达聚合关系

       较强于一般关联 , 有整体与局部之间的关系,并且没有了整体,局部也可单独存在,如小组与小组里面的成员,  小组不存在, 成员也可单独存在 ,  也可加入其它小组, 其组成关系可以共享


组合:(Composition)表示contains-a的关系,是一种强烈的包含关系。组合类负责被组合类的生命周期。也使用集合属性表达聚合关系

 

       也叫合成关系 , 是一种更强的整合与局部的关系 , 其关系更加紧密 ., 如: 一个分子由多个原子按一定的结构组织而成, 在物理变化中(针对分子的操作), 按这个角度去看 , 分子间发生变化 , 变成另一种状态, 但分子结构不变, 还是这种物质. 其组成关系多原子组成结构不可以共享.

 


继承:表示is-a的关系,是对象之间耦合度最大的一种关系,子类继承父类的所有细节。直接使用语言中的继承表达。

      1) 一种父子关系
      2) 有共同特点 , 或者有普通和特殊关系
      3) 如: 一种进化关系, 如: 有机物 --> 蛋白质 -->  微生物 --> 动物 --> 人

posted @ 2009-06-13 01:23  貔貅  阅读(807)  评论(0编辑  收藏  举报