2016-12-24 184 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