依赖 关联 聚合 组合

来源:互联网 发布:网络语数字 编辑:程序博客网 时间:2024/05/04 20:08

 参考 :blog

 

依赖关系 : 在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用。

class Driver {      //使用形参方式发生依赖关系      public void drive1(Car car){          car.run();      }      //使用局部变量发生依赖关系      public void drive2(){          Car car = new Car();          car.run();      }      //使用静态变量发生依赖关系      public void drive3(){          Car.run();      }  }

 

 

 

 

关联 ,聚合 ,组合 ,耦合度逐渐增加!都是关联关系!

以司机和车的关系为例:

 关联 :“车不是我的,我只是个司机,别人给我什么车我就开什么车,我使用这个车。

   它使一个类知道另一个类的属性和方法。例如如果A依赖于B,则B体现为A的全局变量。如person类和company

class Driver {      //使用成员变量形式实现关联      Car mycar;      public void drive(){          mycar.run();      }      ...      //使用方法参数形式实现关联      public void drive(Car car){          car.run();      }  }

  聚合: 一般使用成员变量形式实现,一般使用setter方法给成员变量赋值车是一辆私家车,是司机财产的一部分”车的生命周期与司机无关

   聚合关系是整体和个体的关系 ,普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体,一个是部分

class Driver {      //使用成员变量形式实现聚合关系      Car mycar;      public void drive(){          mycar.run();      }  }

   组合 : "车是司机的必须有的财产,要想成为一个司机必须要先有辆车,车要是没了,司机也不想活了。而且司机要是不干司机了,这个车就砸了,别人谁也别想用" ------ 相互依赖,而前面两种还构不成这么强的耦合 , 一般通过构造方法给成员变量赋值!

   

public Driver(Car car){      mycar = car;  }

 

关联、聚合、组合只能配合语义,结合上下文才能够判断出来,而只给出一段代码让我们判断是关联,聚合,还是组合关系,则是无法判断的。

 

0 0
原创粉丝点击