Entwurfsmuster beziehen sich auf Lösungen, die Entwickler für Probleme zusammenfassen, auf die sie während der Softwareentwicklung wiederholt stoßen. In diesem Artikel werden hauptsächlich Designmuster vorgestellt. Interessierte Freunde können einen Blick darauf werfen.
Offenes und geschlossenes Prinzip: Eine Softwareeinheit wie z Als Klasse sollten Module und Funktionen für Erweiterungen offen und für Änderungen geschlossen sein.
Richter-Substitutionsprinzip: Alle Orte, die auf eine Basisklasse verweisen, müssen in der Lage sein, Objekte ihrer Unterklassen transparent zu verwenden.
Abhängigkeitsinversionsprinzip: High-Level-Module sollten nicht von Low-Level-Modulen abhängen, beide sollten von ihren Abstraktionen abhängen; Details sollten von Abstraktionen abhängen;
Prinzip der Einzelverantwortung: Es darf nicht mehr als einen Grund für einen Klassenwechsel geben. Laienhaft ausgedrückt ist eine Klasse nur für eine Verantwortung verantwortlich.
Prinzip der Schnittstellenisolation: Der Client sollte sich nicht auf Schnittstellen verlassen, die er nicht benötigt; die Abhängigkeit einer Klasse von einer anderen Klasse sollte auf der kleinsten Schnittstelle basieren.
Demeters Gesetz: Ein Objekt sollte das geringste Wissen über andere Objekte behalten
Abstrakte Fabrik (Abstract Factory Pattern) : Bietet eine Schnittstelle zum Erstellen einer Reihe verwandter oder voneinander abhängiger Objekte, ohne deren konkrete Klassen anzugeben.
Adapter (Adaptermuster) : Konvertieren Sie die Schnittstelle einer Klasse in eine andere Schnittstelle, die der Kunde wünscht. Das Adaptermuster ermöglicht die Zusammenarbeit von Klassen, die andernfalls aufgrund inkompatibler Schnittstellen nicht zusammenarbeiten würden.
Bridge (Bridge-Modus) : Trennt den abstrakten Teil von seinem Implementierungsteil, sodass sie sich alle unabhängig voneinander ändern können.
Builder (Builder-Muster) : Trennt die Konstruktion eines komplexen Objekts von seiner Darstellung, sodass mit demselben Konstruktionsprozess unterschiedliche Darstellungen erstellt werden können.
Verantwortungskette (Chain-of-Responsibility-Modus) : Um den Absender und Empfänger der Anfrage zu entkoppeln, sodass mehrere Objekte die Möglichkeit haben, die Anfrage zu bearbeiten. Diese Objekte werden zu einer Kette verbunden und die Anforderung wird entlang der Kette weitergeleitet, bis sie von einem Objekt verarbeitet wird.
Befehl (Befehlsmodus) : Kapselt eine Anforderung als Objekt, sodass Sie Clients mit unterschiedlichen Warteschlangen- oder Protokollanforderungen parametrisieren und abgebrochene Vorgänge unterstützen können.
Composite (Composite-Modus) : Kombinieren Sie Objekte in einer Baumstruktur, um eine „Teil-Ganze“-Hierarchie darzustellen. Composite ermöglicht es Kunden, einzelne Objekte und zusammengesetzte Objekte konsistent zu verwenden.
Decorator (Decorator-Muster) : Fügen Sie einem Objekt dynamisch einige zusätzliche Verantwortlichkeiten hinzu. Im Hinblick auf die erweiterte Funktionalität ist das Decorator-Muster flexibler als die Unterklassenmethode.
Fassade (Fassadenmodus) : Bietet eine konsistente Schnittstelle für eine Reihe von Schnittstellen eines Subsystems. Der Fassadenmodus definiert eine High-Level-Schnittstelle, die die Verwendung des Subsystems erleichtert.
Factory-Methode (Factory-Methodenmuster) : Definieren Sie eine Schnittstelle zum Erstellen von Objekten und lassen Sie Unterklassen entscheiden, welche Klasse instanziiert werden soll. Die Factory-Methode verschiebt die Instanziierung einer Klasse auf ihre Unterklassen.
Fliegengewicht (Fliegengewichtsmodus) : Nutzen Sie die Sharing-Technologie, um eine große Anzahl feinkörniger Objekte effektiv zu unterstützen.
Interpreter (Interpretermodus) : Definieren Sie für eine gegebene Sprache eine Darstellung ihrer Grammatik und einen Interpreter, der diese Darstellung verwendet, um Sätze in der Sprache zu interpretieren.
Iterator (Iteratormuster) : Bietet eine Methode für den sequentiellen Zugriff auf die einzelnen Elemente eines Aggregatobjekts, ohne die interne Darstellung des Objekts offenzulegen.
Mediator (Mediatormuster) : Verwenden Sie ein Mediatorobjekt, um eine Reihe von Objektinteraktionen zu kapseln. Mediatoren machen es überflüssig, dass Objekte explizit aufeinander verweisen, sodass sie lose gekoppelt sind und ihre Interaktionen unabhängig ändern können.
Memento (Memo-Modus) : Erfassen Sie den internen Zustand eines Objekts und speichern Sie diesen Zustand außerhalb des Objekts, ohne die Kapselung zu zerstören. Dadurch können Sie das Objekt später wieder in seinen gespeicherten Zustand versetzen.
Beobachter (Beobachtermuster) : Definieren Sie eine Eins-zu-Viele-Abhängigkeitsbeziehung zwischen Objekten, sodass alle davon abhängigen Objekte benachrichtigt und automatisch aktualisiert werden, wenn sich der Status eines Objekts ändert.
Prototyp (Prototypmodus) : Verwenden Sie eine Prototypinstanz, um den Typ des zu erstellenden Objekts anzugeben, und erstellen Sie neue Objekte, indem Sie diesen Prototyp kopieren.
Proxy (Proxy-Modus) : Stellt einen Proxy für andere Objekte bereit, um den Zugriff auf dieses Objekt zu steuern.
Simple Factory (einfacher Factory-Modus) : Gibt Instanzen verschiedener Klassen gemäß unterschiedlichen Parametern zurück.
Sigleton (Singleton-Modus) : Stellt sicher, dass eine Klasse nur eine Instanz hat und stellt einen globalen Zugriffspunkt für den Zugriff darauf bereit.
Status (Statusmodus) : Ermöglicht einem Objekt, sein Verhalten zu ändern, wenn sich sein interner Status ändert. Das Objekt sieht aus, als ob die Klasse, zu der es gehört, geändert wurde.
Strategie (Strategiemodus) : Definieren Sie eine Reihe von Algorithmen, kapseln Sie sie einzeln und machen Sie sie austauschbar. In diesem Modus kann sich der Algorithmus unabhängig vom Benutzer ändern, der ihn verwendet.
Vorlagenmethode (Vorlagenmethodenmuster) : Definieren Sie das Grundgerüst eines Algorithmus in einer Operation, während Sie einige Schritte auf Unterklassen verschieben. Mit der Vorlagenmethode können Unterklassen bestimmte Schritte eines Algorithmus neu definieren, ohne die Struktur des Algorithmus zu ändern.
Besucher (Besuchermodus) : Stellt eine Operation dar, die auf jedes Element in einer Objektstruktur wirkt. Sie können damit neue Operationen definieren, die auf jedes Element wirken, ohne seine Klasse zu ändern.
Aufgrund von UML wird später verwendet, um die Musterstruktur im Detail zu erklären, aber hier ist ein einfaches Diagramm.
Wenn Sie mehr zu diesem Thema erfahren möchten, schauen Sie sich bitte die PHP-Chinese-Website an, um weitere Neuigkeiten zu erhalten!
Das obige ist der detaillierte Inhalt vonEine Erklärung der Grundkonzepte von Software-Designmustern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!