2016-12-24 7 views
0

Kann jemand bitte erklären, warum der erste Block des Codes fest gekoppelt ist, während der andere lose gekoppelt ist?Enge und lose Kopplung

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

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

Mögliche Duplikate von [Kopplung und Kohäsion] (http://stackoverflow.com/questions/39946/coupling-and-cohesion) –

+0

danke für Ihre Bemühungen andre, ich kannte bereits die Definition, es wäre wunderbar gewesen, wenn Sie haben in Bezug auf den oben genannten Code, den ich erwähnt habe, geantwortet. – abhi

+1

Wir müssten nach dem genauen Anwendungsfall suchen, um festzustellen, ob der Fall eng gekoppelt ist. In Ihrem Fall mit den Entitäten "Employee" und "Address" ist es für die Klasse "Employee" sinnvoll, die Adresse nicht selbst zu erstellen, sondern sie extern in die Objekterstellung einzufügen oder einen Setter zu verwenden. Auf diese Weise können wir einen externen Rahmen (wie Winterschlaf oder Frühling) verwalten und wir können viele Mitarbeiter mit derselben Adresse haben. –

Antwort

1

Employee-Klasse braucht eine Adresse, so Adresse ist eine Abhängigkeit des Mitarbeiters.

Im ersten Fall ist Employee verantwortlich für die Erstellung der Instanz von Adresse und damit Mitarbeiter eng an Adresse gekoppelt ist.

Im zweiten Fall Adresse wird extern an Employee übergeben, daher ist Employee nicht eng an Address gebunden.

Nehmen wir ein Beispiel. Hier haben wir zwei Implementierungen von Address, d. H. HomeAddress und WorkAddress. Da im ersten Fall Employee für die Instanziierung Address verantwortlich ist, ist es entweder mit Haus- oder Arbeitsadresse fest verbunden. Im zweiten Fall kann Employee Klasse jedoch Address verwendet werden, die ihm gegeben wurde.

Verwandte Themen