Prinzip der Einzelverantwortung
Definition: Für einen Klassenwechsel darf es nicht mehr als einen Grund geben. Laienhaft ausgedrückt ist eine Klasse nur für eine Verantwortung verantwortlich.
Richter-Substitutionsprinzip
Definition 1: Wenn Für Für jedes Objekt o1 vom Typ T1 gibt es ein Objekt o2 vom Typ T2, sodass alle mit T1 definierten Programme P durch o2 ersetzt werden, wenn alle Objekte o1
, das Verhalten von Programm P ändert sich nicht, dann ist Typ T2 ein Untertyp von Typ T1.
Definition 2: Alle Stellen, an denen sich auf eine -Basisklasse bezieht, müssen in der Lage sein, Objekte ihrer Unterklassen transparent zu verwenden. Das heißt, überall dort, wo die Basisklasse erscheinen kann, kann die Unterklasse definitiv erscheinen
.
Das Richter-Substitutionsprinzip lautet für Laien: Unterklassen können die Funktionen der Elternklasse erweitern, aber nicht die ursprünglichen Funktionen der Elternklasse ändern. Es enthält die folgenden 4 Bedeutungsebenen:
1). Unterklassen können abstrakte Methoden der übergeordneten Klasse implementieren, jedoch keine nicht-abstrakten Methoden der übergeordneten Klasse überschreiben.
2). Unterklassen können ihre eigenen einzigartigen Methoden hinzufügen.
3 Wenn die -Methode einer Unterklasse die -Methode der übergeordneten Klasse überschreibt, werden die Voraussetzungen der Methode (d. h. die formalen Parameter der Methode) muss entspanntere Eingabeparameter haben als die Methode der übergeordneten Klasse.
4). Wenn eine Methode einer Unterklasse eine abstrakte Methode einer übergeordneten Klasse implementiert, sind die Nachbedingungen der Methode (d. h. der Rückgabewert der Methode) strenger als die der Elternklasse.
Abhängigkeitsinversionsprinzip
Definition: High-Level Module sollten sich nicht auf untergeordnete Module verlassen, die sich beide auf ihre Abstraktionen stützen sollten; sie sollten sich nicht auf Details stützen;
Die Kernidee des Abhängigkeitsinversionsprinzips ist: Programmierung für die Schnittstelle .
Es gibt drei Möglichkeiten, Abhängigkeiten zu übergeben: 1. Schnittstellenübergabe, 2. Konstruktormethodenübergabe , 3. Settermethodenübergabe.
Bei der eigentlichen Programmierung müssen wir im Allgemeinen die folgenden drei Punkte ausführen:
1). Low-Level-Module so weit wie möglich Es muss eine abstrakte Klasse oder eine Schnittstelle oder beides geben.
2). Der deklarierte Variablentyp sollte möglichst eine abstrakte Klasse oder Schnittstelle sein.
3). Befolgen Sie das Liskov-Substitutionsprinzip, wenn Sie Vererbung verwenden.
Prinzip der Schnittstellenisolation
Definition: Der Client tut es Nicht auf Schnittstellen angewiesen sein, die nicht benötigt werden; die Abhängigkeit einer Klasse von einer anderen Klasse sollte auf der kleinsten Schnittstelle basieren.
sollte Kunden eine möglichst kleine individuelle Schnittstelle bieten, anstatt eine große Gesamtschnittstelle bereitzustellen.
1). Es ist besser, mehrere spezialisierte Schnittstellen zu verwenden als eine einzige allgemeine Schnittstelle.
2). Die Abhängigkeit einer Klasse von einer anderen Klasse sollte auf der kleinsten Schnittstelle basieren.
3). Eine Schnittstelle repräsentiert eine Rolle, und einer Schnittstelle sollten keine unterschiedlichen Rollen zugewiesen werden. Irrelevante Schnittstellen werden zu einer aufgeblähten großen
Schnittstelle zusammengeführt, was eine Verschmutzung der Rollen und Schnittstellen darstellt.
4). „Clients sollten nicht gezwungen werden, sich auf Methoden zu verlassen, die sie nicht verwenden. Die Schnittstelle gehört dem Client, nicht der Klassenhierarchie, in der sie sich befindet. "
Das ist sehr klar. Um es einfacher auszudrücken: Zwingen Sie Kunden nicht dazu, Methoden zu verwenden, die sie nicht verwenden. Wenn Sie Benutzer dazu zwingen, Methoden zu verwenden, die sie nicht verwenden nicht verwenden, dann ist dies
Einige Kunden werden mit Änderungen konfrontiert, die durch Änderungen an diesen nicht verwendeten Methoden verursacht werden.
Dimit-Prinzip
Definition: ein Objekt Wissen von andere Gegenstände sollten auf ein Minimum beschränkt werden.
Offensichtlich sind das Interface-Isolation-Prinzip und das verallgemeinerte Demeter-Prinzip Einschränkungen für die Kommunikation zwischen einer Software-Entität und anderen Software-Entitäten. Das verallgemeinerte Demeter-Prinzip erfordert
, die Breite und Tiefe der Kommunikation so weit wie möglich zu begrenzen. Was das Schnittstellenisolationsprinzip einschränkt, ist die Breite der Kommunikation, das heißt, die Kommunikation sollte so eng wie möglich sein.
Demits Gesetz wird auch als das am wenigsten bekannte Prinzip bezeichnet. Es wurde erstmals 1987 von Ian Holland von der Northeastern University in den Vereinigten Staaten vorgeschlagen. Laienhaft ausgedrückt bedeutet
: Je weniger eine Klasse über die Klassen weiß, von denen sie abhängt, 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 kapseln, mit Ausnahme der bereitgestellten öffentlichen Methode dass keine Informationen an die Außenwelt gelangen. Es gibt eine einfachere Definition des Demeter-Gesetzes: Kommunizieren Sie nur mit Freunden, die direkt
sind. Lassen Sie uns zunächst erklären, was ein direkter Freund ist: Jedes Objekt hat eine Kopplungsbeziehung mit anderen Objekten. Solange zwischen zwei Objekten eine Kopplungsbeziehung besteht, werden wir sagen, dass diese zwei Die Objekte sind Freunde. Es gibt viele Arten der Kopplung, z. B. Abhängigkeit, Assoziation, Kombination, Aggregation usw. Unter diesen bezeichnen wir Klassen, die in Mitgliedsvariablen
, Methodenparameter und Methodenrückgabewerte erscheinen, als direkte Freunde, während Klassen, die in lokalen Variablen erscheinen, keine direkten Freunde sind . Mit anderen Worten: Unbekannte Klassen
sollten am besten nicht als lokale Variablen innerhalb der Klasse auftauchen.
Offen-Geschlossen-Prinzip
Eine Software-Entität sollte offen sein für Erweiterung, wegen Änderung geschlossen.
Prinzip der Wiederverwendung von Kombinationen/Aggregationen
Versuchen Sie es Versuchen Sie Ihr Bestes. Verwenden Sie Zusammensetzung/Aggregation anstelle von Vererbung, um eine Wiederverwendung zu erreichen.
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die sechs Prinzipien von Designmustern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!