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

[커플 링 및 응집력] 가능한 복제본 (http://stackoverflow.com/questions/39946/coupling-and-cohesion) –

+0

노력에 감사드립니다. 그리고 이미 정의를 알고있었습니다. 당신은 내가 언급 한 위의 코드의 관점에서 대답했다. – abhi

+1

케이스가 단단히 결합되어 있는지 확인하기 위해 정확한 사용 사례를 찾아야합니다. 당신의 경우에는'Employee'와'Address' 엔티티를 사용하면'Employee' 클래스가 주소 자체를 생성하는 것이 아니라 객체 생성 또는 설정자를 사용하여 외부 적으로 주입하는 것이 합리적입니다. 이렇게하면 우리는 외부 프레임 워크 (최대 절전 또는 스프링과 같은)에서이를 관리 할 수 ​​있으며 동일한 주소를 가진 많은 직원을 보유 할 수 있습니다. –

답변

1

직원 클래스에는 주소가 필요하므로 주소는 Employee의 종속성입니다.

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

첫 번째 경우 Employee는 Address 인스턴스를 생성해야하므로 Employee는 Address에 단단히 연결됩니다. 제 2 케이스 주소

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

직원은 외부에 제공되므로, 직원 단단히 주소에 결합되지 않는다.

예를 들어 보겠습니다. 여기에는 Address의 두 구현 예, 즉 HomeAddressWorkAddress이 있습니다. 첫 번째 경우에는 EmployeeAddress을 인스턴스화 할 책임이 있으므로 집 또는 직장 주소와 밀접하게 연결됩니다. 그러나 두 번째 경우 Employee 클래스는 주어진 Address을 사용할 수 있습니다.