Heim Backend-Entwicklung PHP-Tutorial Detaillierte Einführung in die sechs Prinzipien von Designmustern

Detaillierte Einführung in die sechs Prinzipien von Designmustern

Mar 15, 2017 pm 05:13 PM

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Unterschied zwischen Entwurfsmustern und Architekturmustern im Java-Framework Der Unterschied zwischen Entwurfsmustern und Architekturmustern im Java-Framework Jun 02, 2024 pm 12:59 PM

Im Java-Framework besteht der Unterschied zwischen Entwurfsmustern und Architekturmustern darin, dass Entwurfsmuster abstrakte Lösungen für häufige Probleme beim Softwaredesign definieren und sich dabei auf die Interaktion zwischen Klassen und Objekten konzentrieren, beispielsweise Fabrikmuster. Architekturmuster definieren die Beziehung zwischen Systemstrukturen und Modulen und konzentrieren sich auf die Organisation und Interaktion von Systemkomponenten, wie z. B. eine geschichtete Architektur.

Analyse des Decorator-Musters in Java-Entwurfsmustern Analyse des Decorator-Musters in Java-Entwurfsmustern May 09, 2024 pm 03:12 PM

Das Dekoratormuster ist ein strukturelles Entwurfsmuster, das das dynamische Hinzufügen von Objektfunktionen ermöglicht, ohne die ursprüngliche Klasse zu ändern. Es wird durch die Zusammenarbeit von abstrakten Komponenten, konkreten Komponenten, abstrakten Dekoratoren und konkreten Dekoratoren implementiert und kann Klassenfunktionen flexibel erweitern, um sich ändernden Anforderungen gerecht zu werden. In diesem Beispiel werden Milch- und Mokka-Dekoratoren zu Espresso für einen Gesamtpreis von 2,29 $ hinzugefügt, was die Leistungsfähigkeit des Dekoratormusters bei der dynamischen Änderung des Verhaltens von Objekten demonstriert.

Praktische Fallanalyse des PHP-Entwurfsmusters Praktische Fallanalyse des PHP-Entwurfsmusters May 08, 2024 am 08:09 AM

1. Factory-Muster: Trennen Sie Objekterstellung und Geschäftslogik und erstellen Sie Objekte bestimmter Typen über Factory-Klassen. 2. Beobachtermuster: Ermöglicht Subjektobjekten, Beobachterobjekte über ihre Zustandsänderungen zu benachrichtigen, wodurch eine lose Kopplung und ein Beobachtermuster erreicht werden.

Wie Entwurfsmuster mit Herausforderungen bei der Codewartung umgehen Wie Entwurfsmuster mit Herausforderungen bei der Codewartung umgehen May 09, 2024 pm 12:45 PM

Entwurfsmuster lösen Herausforderungen bei der Codewartung, indem sie wiederverwendbare und erweiterbare Lösungen bereitstellen: Beobachtermuster: Ermöglicht Objekten, Ereignisse zu abonnieren und Benachrichtigungen zu erhalten, wenn sie auftreten. Factory-Muster: Bietet eine zentralisierte Möglichkeit, Objekte zu erstellen, ohne auf konkrete Klassen angewiesen zu sein. Singleton-Muster: stellt sicher, dass eine Klasse nur eine Instanz hat, die zum Erstellen global zugänglicher Objekte verwendet wird.

Die wunderbare Verwendung des Adaptermusters in Java-Entwurfsmustern Die wunderbare Verwendung des Adaptermusters in Java-Entwurfsmustern May 09, 2024 pm 12:54 PM

Das Adaptermuster ist ein strukturelles Entwurfsmuster, das die Zusammenarbeit inkompatibler Objekte ermöglicht. Es wandelt eine Schnittstelle in eine andere um, sodass die Objekte reibungslos interagieren können. Der Objektadapter implementiert das Adaptermuster, indem er ein Adapterobjekt erstellt, das das angepasste Objekt enthält, und die Zielschnittstelle implementiert. In einem praktischen Fall kann der Client (z. B. MediaPlayer) über den Adaptermodus Medien im erweiterten Format (z. B. VLC) abspielen, obwohl er selbst nur normale Medienformate (z. B. MP3) unterstützt.

PHP-Entwurfsmuster: Testgetriebene Entwicklung in der Praxis PHP-Entwurfsmuster: Testgetriebene Entwicklung in der Praxis Jun 03, 2024 pm 02:14 PM

TDD wird verwendet, um hochwertigen PHP-Code zu schreiben. Die Schritte umfassen: Testfälle schreiben, die erwartete Funktionalität beschreiben und sie zum Scheitern bringen. Schreiben Sie Code so, dass nur die Testfälle ohne übermäßige Optimierung oder detailliertes Design erfolgreich sind. Nachdem die Testfälle bestanden wurden, optimieren und überarbeiten Sie den Code, um die Lesbarkeit, Wartbarkeit und Skalierbarkeit zu verbessern.

Anwendung von Designmustern im Guice-Framework Anwendung von Designmustern im Guice-Framework Jun 02, 2024 pm 10:49 PM

Das Guice-Framework wendet eine Reihe von Entwurfsmustern an, darunter: Singleton-Muster: Durch die @Singleton-Annotation wird sichergestellt, dass eine Klasse nur eine Instanz hat. Factory-Methodenmuster: Erstellen Sie eine Factory-Methode über die Annotation @Provides und rufen Sie die Objektinstanz während der Abhängigkeitsinjektion ab. Strategiemodus: Kapseln Sie den Algorithmus in verschiedene Strategieklassen und geben Sie die spezifische Strategie über die Annotation @Named an.

Was sind die Vor- und Nachteile der Verwendung von Entwurfsmustern im Java-Framework? Was sind die Vor- und Nachteile der Verwendung von Entwurfsmustern im Java-Framework? Jun 01, 2024 pm 02:13 PM

Zu den Vorteilen der Verwendung von Entwurfsmustern in Java-Frameworks gehören: verbesserte Lesbarkeit, Wartbarkeit und Skalierbarkeit des Codes. Zu den Nachteilen gehören Komplexität, Leistungsaufwand und eine steile Lernkurve aufgrund übermäßiger Nutzung. Praktischer Fall: Der Proxy-Modus wird zum verzögerten Laden von Objekten verwendet. Setzen Sie Entwurfsmuster mit Bedacht ein, um ihre Vorteile zu nutzen und ihre Nachteile zu minimieren.

See all articles