Wird das Demeter-Gesetz auch auf Eigenschaften angewendet?

8

Gesetz von demeter sagt, dass ein Objekt eine Methode M von einem Objekt B von einem Objekt A nicht aufrufen kann. Aber gilt es auch für Immobilien? Beispiel?

%Vor%

Kann ich so etwas machen?

%Vor%

oder soll ich das tun:

%Vor%

Gibt es ein Problem (nach dem Gesetz), wenn ich von A auf eine B-Methode zugreife?

    
MuriloKunze 22.12.2012, 21:34
quelle

1 Antwort

11

Ja, das gilt auch für Eigenschaften, da der Client dieses Codes:

%Vor%

ist an A und auch an B gekoppelt.

Wenn Sie das Gesetz der Demeter-Verstöße festlegen, müssen Sie die Notwendigkeit der Entkoppelung und die Notwendigkeit, die Zuständigkeiten klar getrennt zu halten, abwägen. Manchmal können Sie Demeter-Transmogrifier erstellen: Klassen, die zu viele nicht verwandte Methoden haben, nur um dem Demeter-Gesetz zu entsprechen.

Update : Ein Beispiel für einen Demeter Transmogrifier finden Sie in diesen Beitrag :

  

Betrachten wir zum Beispiel jemanden, der versucht, sich an seinen Boss zu küssen: sendFlowers(john.getManager().getSpouse()) . Das Anwenden von Hide Delegate würde eine getManagersSpouse() -Methode in Employee ergeben. Yuck.

    
Jordão 22.12.2012, 21:36
quelle