


Verstehen Sie das Template-Methodenmuster von PHP-Entwurfsmustern in einem Artikel
Das Vorlagenmethodenmuster ist auch ein häufig verwendetes Entwurfsmuster, bei dem es sich um ein Verhaltensentwurfsmuster handelt. Seine Definition lautet: Definieren Sie das Grundgerüst eines Algorithmus in einer Methode und verschieben Sie einige Schritte auf Unterklassen. Mithilfe von Vorlagenmethoden können Unterklassen bestimmte Schritte im Algorithmus neu definieren, ohne die Struktur des Algorithmus zu ändern.
Szenario
Normalerweise stehe ich am Wochenende spät auf, also gehe ich nicht raus, um Frühstück zu kaufen, sondern mache vielleicht einfach einen Eimer Instantnudeln oder scharf-saure Nudeln oder Huainan-Rindfleischsuppe . Die Schritte zum Einweichen von Instantnudeln oder scharf-sauren Nudeln sind die gleichen. Zuerst müssen Sie kochendes Wasser zubereiten, dann die Instantnudeln oder scharf-sauren Nudeln in kochendem Wasser einweichen, dann Ihr eigenes Gewürzpaket hinzufügen und schließlich einweichen 2 bis 3 Minuten. Es gibt zwei Schritte, die genau gleich sind (kochendes Wasser vorbereiten, 2 bis 3 Minuten einweichen) und zwei Schritte, die ähnlich sind (Zutaten einweichen, entsprechende Gewürzpäckchen hinzufügen).
Für das obige Szenario können wir einen Algorithmus zum Einweichen von Instantnudeln oder scharf-sauren Nudeln definieren. Dieser Algorithmus ist sehr einfach, 4 Schritte
Kochendes Wasser vorbereiten
Zutaten einweichen (Instant-Nudeln oder scharf-saure Nudeln)
Gewürze hinzufügen (Instant-Nudeln und scharf-saure Nudeln haben ihre eigenen Gewürzbeutel)
2–3 Minuten in kochendem Wasser einweichen
Jetzt verwenden wir das Muster der Vorlagenmethode, um die oben genannten Anforderungen zu erfüllen.
Definieren Sie zunächst eine abstrakte Klasse, die den spezifischen Algorithmus und jeden Schritt definiert.
abstract class Breakfast { final public function prepare () { $this->boilWater(); $this->brew(); $this->addSeasoning(); $this->wait(); } public function boilWater () { echo '准备开水' . PHP_EOL; } // 泡食材 abstract public function brew (); // 加调料 abstract public function addSeasoning (); public function wait () { echo '等待2~3分钟' . PHP_EOL; } }
Die Prepare-Methode enthält den spezifischen Algorithmus. Durch Hinzufügen von final zu dieser Methode wird verhindert, dass die Methode überschrieben wird. Darüber hinaus können Sie sehen, dass es hier zwei abstrakte Methoden gibt, die von zukünftigen Generationen vervollständigt werden müssen.
Als nächstes vervollständigen wir die Kategorien Instantnudeln und scharf-saure Nudeln. Diese beiden Klassen müssen Breakfast erben und dann die abstrakte Methode abschließen.
class Noodle extends Breakfast { public function brew () { echo '加入方便面' . PHP_EOL; } public function addSeasoning () { echo '加入方便面的调料包' . PHP_EOL; } } class Powder extends Breakfast { public function brew () { echo '加入酸辣粉' . PHP_EOL; } public function addSeasoning () { echo '加入酸辣粉的调料包' . PHP_EOL; } }
Das obige Beispiel ist ein typisches Vorlagenmethodenmuster. Das Algorithmusgerüst wird in der übergeordneten Klasse definiert und die Unterklasse führt einige Schritte im Algorithmus aus.
Hooks
Das obige Beispiel spiegelt ein häufiges Szenario im Vorlagenmethodenmuster wider: Wiederverwendung. Neben der Wiederverwendung ist das Vorlagenmethodenmuster auch eine wichtige Anwendungserweiterung.
Das Template-Methodenmuster wird durch Hooks erweitert. Ein Hook ist eine in einer abstrakten Klasse deklarierte Methode, jedoch mit einer leeren oder Standardimplementierung. Das Vorhandensein von Hooks gibt Unterklassen die Möglichkeit, verschiedene Punkte des Algorithmus einzubinden. Es liegt an der Unterklasse, zu entscheiden, ob sie eingehängt wird oder nicht.
Lassen Sie uns weiterhin die Verwendung von Haken anhand von Beispielen erklären. Wenn ich Instantnudeln esse, füge ich normalerweise Schinken oder Eier hinzu. Das Hinzufügen von Schinken und Eiern ist ungewiss, daher können wir es einhaken und die Unterklasse entscheiden lassen, ob Schinken oder Eier hinzugefügt werden sollen.
Frühstück.php ändern
abstract class Breakfast { final public function prepare () { $this->boilWater(); $this->brew(); $this->addSeasoning(); $this->hook(); $this->wait(); } // 省略部分方法 // 默认不做任何事情 public function hook () :void {} }
Noodle.php ändern und die Hook-Methode neu schreiben
public function hook(): void { echo '加入火腿和鸡蛋' . PHP_EOL; }
Template-Methodenmuster und Callback-Funktion
Es gibt viele Funktionen in PHP, die ähnliche Ideen wie das Template-Methodenmuster oder die Template-Strategie verwenden Muster, wie zum Beispiel die Funktion sort(), die den Sortieralgorithmus kapselt, aber die spezifischen Sortierregeln werden durch die Rückruffunktion vervollständigt. Durch die Rückruffunktion müssen keine abstrakten Klassen und Unterklassen erstellt werden, wodurch die Codemenge erheblich reduziert wird.
Die Beziehung zwischen Template-Methodenmuster, Factory-Methodenmuster und Strategiemuster
Factory-Methodenmuster ist eine Sonderform des Template-Methodenmusters.
Die Vorlagenmethode basiert auf dem Vererbungsmechanismus: Sie ermöglicht es Ihnen, einen Teil des Algorithmus zu ändern, indem Sie einen Teil des Inhalts in der Unterklasse erweitern.
Das Strategiemuster basiert auf dem Kompositionsmechanismus: Sie können einen Teil des Verhaltens eines Objekts ändern, indem Sie unterschiedliche Strategien für das entsprechende Verhalten bereitstellen.
Vorlagenmethoden arbeiten auf Klassenebene, sind also statisch. Richtlinien wirken auf Objektebene und ermöglichen so die Änderung des Verhaltens zur Laufzeit.
Das obige ist der detaillierte Inhalt vonVerstehen Sie das Template-Methodenmuster von PHP-Entwurfsmustern in einem Artikel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Alipay PHP ...

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...
