Класс сотрудника нуждается в адресе, поэтому адрес является зависимым от 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
, которые ему были предоставлены.
Возможный дубликат [Связь и сцепление] (http://stackoverflow.com/questions/39946/coupling-and-cohesion) –
Спасибо за ваши усилия andre, я уже знал определение. Было бы замечательно, если бы вы ответили в терминах вышеуказанного кода, о котором я упомянул. – abhi
Нам нужно будет найти конкретный случай использования, чтобы определить, если случай плотно связан. В вашем случае с сущностями 'Employee' и' Address' имеет смысл, если класс 'Employee' не будет создавать сам адрес, но он должен быть введен снаружи при создании объекта или с помощью сеттера. Таким образом мы разрешаем внешнюю структуру (например, спящий режим или весну) управлять ею, и у нас может быть много сотрудников с одинаковым адресом. –