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

Спасибо за ваши усилия andre, я уже знал определение. Было бы замечательно, если бы вы ответили в терминах вышеуказанного кода, о котором я упомянул. – abhi

+1

Нам нужно будет найти конкретный случай использования, чтобы определить, если случай плотно связан. В вашем случае с сущностями 'Employee' и' Address' имеет смысл, если класс 'Employee' не будет создавать сам адрес, но он должен быть введен снаружи при создании объекта или с помощью сеттера. Таким образом мы разрешаем внешнюю структуру (например, спящий режим или весну) управлять ею, и у нас может быть много сотрудников с одинаковым адресом. –

ответ

1

Класс сотрудника нуждается в адресе, поэтому адрес является зависимым от Employee.

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

В первом случае работник несет ответственность за создание экземпляра адреса и, следовательно, Сотрудник тесно связан с адресом.

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

Во втором случае адрес будет предоставлен сотруднику извне, поэтому Сотрудник не будет тесно связан с адресом.

Приведем пример. Здесь мы имеем две реализации Address, то есть HomeAddress и WorkAddress. Поскольку в первом случае Employee отвечает за создание экземпляра Address, он тесно связан с домашним или рабочим адресом. Однако во втором случае класс Employee может использовать любые Address, которые ему были предоставлены.