`

依赖 关联 聚合 组合

 
阅读更多

 参考 :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;  
}

 

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics