Miért?
Objektumok függőségei egy szolgáltatási lánc több szemén keresztül csúnya szoros csatoláshoz (coupling) vezetnek.
Objektumok függőségei egy szolgáltatási lánc több szemén keresztül csúnya szoros csatoláshoz (coupling) vezetnek.
A Law of Demeter-nél az a cél, hogy az objektumok összjátékát egészséges mértékre korlátozzuk. Ezt egyszerűsítve a következőképpen lehet megfogalmazni: “Don’t talk to strangers”. A Law of Demeter szerint egy eljárásnak csak a következő eljárásokat szabadna használnia:
- saját osztályának eljárásait
- paramétereinek eljárásait
- saját osztálya által használt osztályok eljárásait
- saját maga által létrehozott objektumok eljárásait
Azonban: Figyelembe kell vennünk, hogy néha van értelme a tisztán adattároló osztályoknak. Ezekre természetesen nem kell alkalmazni a Law of Demeter-t. Éppenséggel lehet, hogy van értelme annak, hogy a konfigurációs adatokat több hierarchikus osztályra osszuk szét, úgy hogy a végén a következő hozzáférés adódik egy értékhez:
int margin = config.Pages.Margins.Left;
Ha itt a Law of Demeter-t akarnánk alkalmazni, akkor csak a config.Pages volna megengedett.