


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!

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

PHP bleibt im Modernisierungsprozess wichtig, da es eine große Anzahl von Websites und Anwendungen unterstützt und sich den Entwicklungsbedürfnissen durch Frameworks anpasst. 1.PHP7 verbessert die Leistung und führt neue Funktionen ein. 2. Moderne Frameworks wie Laravel, Symfony und Codesigniter vereinfachen die Entwicklung und verbessern die Codequalität. 3.. Leistungsoptimierung und Best Practices verbessern die Anwendungseffizienz weiter.

PhPhas significantantyPactedWebDevelopmentAndendendsbeyondit.1) iTpowersMAjorPlatforms-LikewordpressandExcelsInDatabaseInteractions.2) php'SadaptabilityAllowStoscaleForLargeApplicationsfraMe-Linien-Linien-Linien-Linienkripte

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

Verwenden Sie in PHP das Klonschlüsselwort, um eine Kopie des Objekts zu erstellen und das Klonierungsverhalten über die \ _ \ _ Clone Magic -Methode anzupassen. 1. Verwenden Sie das Klonschlüsselwort, um eine flache Kopie zu erstellen und die Eigenschaften des Objekts, nicht die Eigenschaften des Objekts zu klonen. 2. Die \ _ \ _ Klonmethode kann verschachtelte Objekte tief kopieren, um flache Kopierprobleme zu vermeiden. 3. achten Sie darauf, dass kreisförmige Referenzen und Leistungsprobleme beim Klonen vermieden werden, und optimieren Sie die Klonierungsvorgänge, um die Effizienz zu verbessern.

PHP eignet sich für Webentwicklungs- und Content -Management -Systeme, und Python eignet sich für Datenwissenschafts-, maschinelles Lernen- und Automatisierungsskripte. 1.PHP hat eine gute Leistung beim Erstellen von schnellen und skalierbaren Websites und Anwendungen und wird üblicherweise in CMS wie WordPress verwendet. 2. Python hat sich in den Bereichen Datenwissenschaft und maschinelles Lernen mit reichen Bibliotheken wie Numpy und TensorFlow übertrifft.


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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

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

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

Dreamweaver CS6
Visuelle Webentwicklungstools

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung