Heim > Backend-Entwicklung > PHP-Tutorial > Wie verwende ich ein Vorlagenmethodenmuster in PHP?

Wie verwende ich ein Vorlagenmethodenmuster in PHP?

PHPz
Freigeben: 2024-06-04 17:15:00
Original
520 Leute haben es durchsucht

Das Vorlagenmethodenmuster definiert das Grundgerüst des Algorithmus, und die spezifischen Schritte werden von Unterklassen implementiert, sodass Unterklassen bestimmte Schritte anpassen können, ohne die Gesamtstruktur zu ändern. Dieses Muster wird verwendet, um: 1. das Grundgerüst des Algorithmus zu definieren. 2. Verschieben Sie das spezifische Verhalten des Algorithmus auf Unterklassen. 3. Ermöglichen Sie Unterklassen, bestimmte Schritte des Algorithmus anzupassen, ohne die Gesamtstruktur des Algorithmus zu ändern.

Wie verwende ich ein Vorlagenmethodenmuster in PHP?

Template-Methodenmuster in PHP

Einführung

Das Template-Methodenmuster ist ein Entwurfsmuster, das das Grundgerüst eines Algorithmus definiert und die spezifischen Schritte durch Unterklassen implementiert werden. Dadurch können Unterklassen bestimmte Schritte anpassen, ohne die Gesamtstruktur des Algorithmus zu ändern.

UML-Diagramm

+----------------+
| AbstractClass  |
+----------------+
| + templateMethod() |
+----------------+

+----------------+
| ConcreteClass1  |
+----------------+
| + concreteMethod1() |
+----------------+

+----------------+
| ConcreteClass2  |
+----------------+
| + concreteMethod2() |
+----------------+
Nach dem Login kopieren

Codebeispiel

AbstractClass.php

abstract class AbstractClass
{
    public function templateMethod()
    {
        $this->step1();
        $this->step2();
        $this->hookMethod();
    }

    protected abstract function step1();
    protected abstract function step2();
    protected function hookMethod() {}
}
Nach dem Login kopieren

ConcreteClass1.php

class ConcreteClass1 extends AbstractClass
{
    protected function step1()
    {
        echo "ConcreteClass1: Step 1<br>";
    }

    protected function step2()
    {
        echo "ConcreteClass1: Step 2<br>";
    }
}
Nach dem Login kopieren

ConcreteClass2.php

rrree

Praktischer Fall

Angenommen, wir haben einen Studenten Um das System zu verwalten, müssen wir zwei Seiten erstellen: die Seite „Studentenliste“ und die Seite „Studentendetails“. Die beiden Seiten verwenden das gleiche Layout, haben aber unterschiedliche Inhalte.

StudentManager.php

class ConcreteClass2 extends AbstractClass
{
    protected function step1()
    {
        echo "ConcreteClass2: Step 1<br>";
    }

    protected function step2()
    {
        echo "ConcreteClass2: Step 2<br>";
    }

    protected function hookMethod()
    {
        echo "ConcreteClass2: Hook Method<br>";
    }
}
Nach dem Login kopieren

StudentListView.php

class StudentManager
{
    public function showStudentList()
    {
        $students = // 获取学生数据
        $view = new StudentListView();
        $view->setStudents($students);
        $view->render();
    }

    public function showStudentDetail($id)
    {
        $student = // 获取学生数据
        $view = new StudentDetailView();
        $view->setStudent($student);
        $view->render();
    }
}
Nach dem Login kopieren

StudentDetailView.php

class StudentListView extends AbstractView
{
    private $students;

    public function setStudents($students)
    {
        $this->students = $students;
    }

    public function render()
    {
        $this->showHeader();
        $this->showStudents();
        $this->showFooter();
    }

    protected function showStudents()
    {
        echo "<h1>学生列表</h1>";
        echo "<ul>";
        foreach ($this->students as $student) {
            echo "<li>" . $student->getName() . "</li>";
        }
        echo "</ul>";
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie verwende ich ein Vorlagenmethodenmuster in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage