Definition
Eine Leitlinie für Software‑Design (auch Prinzip des geringsten Wissens genannt), die vorschreibt, dass ein Modul nur mit seinen unmittelbaren Kollaborateuren kommunizieren soll (sich selbst, seine Felder, Parameter, von ihm erzeugte Objekte und direkte Komponenten), um Kopplung zu reduzieren und interne Struktur zu verbergen.

Prinzip

Prinzip
Minimierung von Kopplung und Informationsfreigabe durch Einschränkung der Menge an Objekten, die ein Modul direkt nutzt, wodurch Modularität und Austauschbarkeit verbessert und tiefe Ketten delegierter Aufrufe verhindert werden.

Demonstration

Demonstration
Konkretes Beispiel: Statt client.methodA().methodB().doWork() sollte der Client das übergeordnete Objekt bitten, die benötigte Operation auszuführen, oder ein kompaktes Interface nutzen, sodass der Client nicht interne Objektgraphen durchläuft; das reduziert fragile Abhängigkeiten von Objektinternas.

Fehlanwendung

Fehlanwendung
Dogmatische Anwendung des Demeter-Gesetzes kann zu übermäßigen Wrapper-Methoden, anämischen Schnittstellen oder zu stark fragmentierten Verantwortlichkeiten führen, was Klarheit oder Leistung schadet; umgekehrt kann das Vermeiden jeglicher Delegation Logik duplizieren und Wiederverwendung verringern.

Konsequenz

Konsequenz
Bei ausgewogener Anwendung reduziert es unbeabsichtigte Kopplung, erleichtert Refactoring und verbessert Kapselung und Testbarkeit; es kann jedoch die Anzahl von Weiterleitungs-Methoden erhöhen oder bewusst gestaltete Fassade-Interfaces erforderlich machen.

Umkehrung

Umkehrung
Der umgekehrte Ansatz erlaubt Modulen, tiefen internen Objektgraphen frei zu durchlaufen und zu manipulieren, was Ausdruckskraft erhöht, aber enge Kopplung und fragile Abhängigkeiten schafft.

Abgrenzung

Abgrenzung
Eine Heuristik für objektorientiertes und komponentenbasiertes Design, keine absolute Regel: Sie betrifft Kopplung auf Aufrufstellen-Ebene und schreibt keine internen Implementierungsentscheidungen, Schichtenarchitektur‑Entscheidungen oder die Nutzung gemeinsamer unveränderlicher Daten vor.

Semantische Spannung

Semantische Spannung
Spannung zwischen strenger Kopplungsreduktion, wie vom Gesetz gefordert, und pragmatischen Gesichtspunkten wie Performance, Klarheit und Vermeidung von Boilerplate; Spannung zwischen lokalen Nachrichten‑Nutzungsregeln und höherstufigen Architekturmustern (z. B. Visitor, Fluent APIs).

Synthese

Synthese
Das Demeter-Gesetz empfiehlt, direkte Interaktionen auf unmittelbare Kollaborateure zu beschränken, um Kopplung zu mindern und Modularität zu verbessern; bei wohlüberlegter Anwendung erhöht es die Wartbarkeit, doch Überanwendung oder blinder Gehorsam erzeugt andere Kosten, die abzuwägen sind.