紧耦合松动

时间:2016-12-24 15:09:53

标签: spring coupling

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

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

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

1 个答案:

答案 0 :(得分:1)

Employee类需要一个Address,因此Address是Employee的依赖项。

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

在第一种情况下,Employee负责创建Address实例,因此Employee与Address紧密耦合。

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

在第二种情况下,地址将从外部提供给员工,因此员工与地址没有紧密联系。

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