2016-12-24 181 views
0

有人可以解释为什么第一块代码紧密耦合而另一个松耦合?紧耦合和松耦合

// tightly coupled 
class Employee { 
    Address address; 
    Employee(){ 
     address=new Address(); 
    } 
} 

//loosely coupled 
class Employee { 
    Address address; 
    Employee(Address address){ 
     this.address=address; 
    } 
} 
+0

[Coupling and cohesion]的可能重复(http://stackoverflow.com/questions/39946/coupling-and-cohesion) –

+0

感谢您的努力andre,我已经知道定义,它会是美好的,如果你已经回答了上面提到的代码。 – abhi

+1

我们需要寻找确切的案例来确定案件是否紧密结合。在你的情况下,使用'Employee'和'Address'实体,'Employee'类不是自己创建地址,而是从外部注入到对象创建中或使用setter。通过这种方式,我们允许外部框架(如hibernate或spring)对其进行管理,并且我们可以拥有许多具有相同地址的员工。 –

回答

1

员工类需要一个地址,所以地址是员工的依赖关系。

// tightly coupled 
class Employee { 
    Address address; 
    Employee(){ 
     address=new Address(); 
    } 
} 

在第一种情况下,员工负责创建地址实例,因此员工与地址紧密耦合。

//loosely coupled 
class Employee { 
    Address address; 
    Employee(Address address){ 
     this.address=address; 
    } 
} 

第二种情况地址将在外部给予员工,所以员工与地址紧密耦合。

举个例子吧。这里我们有两个实现Address,即HomeAddressWorkAddress。由于在第一种情况下Employee负责实例化Address,因此它与家庭或工作地址紧密耦合。然而,在第二种情况下,Employee类可以使用已经提供给它的任何Address