Engineering Design und Analyse
Umsetzung des Demetergesetzes zur Verringerung der Objektabhängigkeit im objektorientierten Design
Table of Contents
Das Demetergesetz ist eine Designrichtlinie für die Entwicklung von Software, insbesondere bei der objektorientierten Programmierung, mit dem Ziel, die Abhängigkeiten zwischen Objekten zu reduzieren, Systeme modularer, wartungsfreundlicher und weniger anfällig für Fehler zu machen.
Das Gesetz der Demeter verstehen
Das Demetergesetz, das oft als "Sprich nur mit deinen unmittelbaren Freunden" zusammengefasst wird, ermutigt Objekte, nur mit ihren direkten Mitarbeitern zu kommunizieren.
- selbst
- Objekte als Parameter übergeben
- Objekte, die sie schafft
- Seine direkten Komponentenobjekte
Durch die Einhaltung dieser Regel werden die Abhängigkeiten des Objekts minimiert, wodurch das Risiko einer engen Kopplung verringert und der Code leichter zu ändern oder zu erweitern ist.
Umsetzung des Demetergesetzes
Bei der Umsetzung des Demetergesetzes geht es darum, Klassen und Methoden zu entwerfen, die nicht tief in Objektgraphen eindringen, z. B. statt:
order.getCustomer().getAddress().getCity()
Es ist besser, eine Methode zur Verfügung zu stellen, die die notwendigen Informationen direkt zurückgibt:
order.getCustomerCity()
Refactoring-Tipps
- Verkapseln Sie komplexe Ketten innerhalb der Klasse selbst.
- Erstellen Sie Methoden, die nur die notwendigen Daten freilegen.
- Verwenden Sie Designmuster wie Facade oder Mediator, um Abhängigkeiten zu reduzieren.
- Halten Sie Klassen auf eine einzige Verantwortung konzentriert.
Vorteile des Befolgens des Demetergesetzes
Die Einhaltung dieses Gesetzes bietet mehrere Vorteile:
- Reduziert die Kopplung zwischen Klassen.
- Verbessert die Codelesbarkeit und Wartbarkeit.
- Erleichtert das Unit-Testing durch die Isolierung von Objekten.
- Erleichtert das Refactoring und die Erweiterung von Code.
Zusammenfassend lässt sich sagen, dass die Umsetzung des Demetergesetzes im objektorientierten Design einen saubereren, modulareren Code fördert. Es ermutigt Entwickler, sorgfältig über Objektinteraktionen und Abhängigkeiten nachzudenken, was zu robusteren Softwaresystemen führt.