Definition: Ein Objekt sollte das geringste Verständnis anderer Objekte behalten.
Der Ursprung des Problems: Je näher die Beziehung zwischen Klassen ist, desto größer ist der Kopplungsgrad und wenn sich eine Klasse ändert, desto größer ist die Auswirkung auf eine andere Klasse.
Lösung: Minimieren Sie die Kopplung zwischen Klassen.
Seit wir mit der Programmierung begonnen haben, haben wir die allgemeinen Prinzipien der Softwareprogrammierung kennen: niedrige Kopplung, hohe Zusammenhalt. Unabhängig davon, ob es sich um prozessorientierte oder objektorientierte Programmierung handelt, kann die Code-Wiederverwendungrate nur verbessert werden, indem die Kopplung zwischen jedem Modul so niedrig wie möglich beibehalten wird. Die Vorteile einer niedrigen Kopplung sind selbstverständlich, aber wie können Sie programmieren, um eine niedrige Kopplung zu erreichen? Genau das wird die Dimit -Regel erreichen.
Das Dimitter -Gesetz, auch als Prinzip des geringsten Wissens bekannt, wurde 1987 von Ian Holland von der Northeastern University in den Vereinigten Staaten vorgeschlagen. In Laienberichten wissen Sie, je weniger Sie über eine Klasse wissen, die abhängig ist, desto besser. Mit anderen Worten, versuchen Sie für die abhängige Klasse, egal wie komplex die Logik ist, die Logik innerhalb der Klasse zu verkapseln und keine Informationen an die Außenseite außer der öffentlichen Methode zu lenken. Die Dimit -Regel hat auch eine einfachere Definition: Nur mit direkten Freunden kommunizieren. Lassen Sie uns zunächst erklären, was ein direkter Freund ist: Jedes Objekt hat eine gekoppelte Beziehung zu anderen Objekten. Solange es eine Kopplungsbeziehung zwischen den beiden Objekten gibt, werden wir sagen, dass diese beiden Objekte eine Freundesbeziehung sind. Es gibt viele Möglichkeiten, um zu koppeln, wie Abhängigkeit, Assoziation, Kombination, Aggregation usw.. Wir nennen die Klasse in der Mitgliedsvariable, der Methodenparameter und der Methodenrückgabewert, die als direkte Freunde erscheint, während die Klasse in der lokalen Variablen keine direkten Freunde ist. Mit anderen Worten, es ist am besten, nicht in der Klasse als lokale Variable zu erscheinen.
Hier ist ein Beispiel für eine Verletzung des Dimit -Prinzips:
öffentlicher Klassenlehrer {public void Teacher (Klassenklassen) {classes.getstudents.getScore.show (); }}
Was sind die Probleme? Zu hohe Kupplung.
1. Die Punktzahlklasse kann in der Schülerklasse abgesagt werden.
2. Die Showmethode der Score -Klasse kann ebenfalls gelöscht werden.
Schülerklassen und Score -Kurse sind Ihnen alle unbekannt, und Sie wissen möglicherweise nicht, wann sie sich ändern.
Wir können es ändern an:
öffentlicher Klassenlehrer {public void Teacher (Klassenklassen) {classes.showscore (); }} öffentliche Klassenklassen {public void ShowsCore (Student Student) {student.showscore (); }} öffentliche Klasse Schüler {Punktzahl; public void showscore () {Score = New Score (80); Score.Show (); }}
Zusammenfassen:
1. Der Vorteil des Dimit -Gesetzes besteht darin, die Kopplung zwischen Klassen zu verringern.
2. Der Nachteil ist, dass es mehr kleine Methoden erzeugt, wodurch das System chaotischer wird und die Kommunikationseffizienz verringert wird.
3. Anwendungen im Konstruktionsmodus: Fassademodus (Fassademodus) und Mediatormodus (Mediatormodus).