Template-Methodenmuster und seine PHP-Implementierung

伊谢尔伦
Freigeben: 2023-03-02 18:32:01
Original
1144 Leute haben es durchsucht

Vorlagenmethodenmuster ist ein Verhaltensmuster, das das Grundgerüst eines Algorithmus in einer Operation definiert und einige Schritte auf Unterklassen verschiebt. Mit der Vorlagenmethode können Unterklassen bestimmte Schritte eines Algorithmus neu definieren, ohne die Struktur des Algorithmus zu ändern.

Hauptrolle

Abstrakte Vorlage (AbstractClass)-Rolle

Definieren Sie eine oder mehrere abstrakte Methoden, die von Unterklassen implementiert werden sollen. Diese abstrakten Methoden werden als Grundoperationen bezeichnet und sind Komponenten der Logik der obersten Ebene.

Definieren Sie eine Vorlagenmethode. Bei dieser Vorlagenmethode handelt es sich im Allgemeinen um eine konkrete Methode, die das Grundgerüst der Logik der obersten Ebene angibt. Die logischen Kompositionsschritte befinden sich in den entsprechenden abstrakten Operationen, und diese Operationen werden auf Unterklassen verschoben. Gleichzeitig kann die Logik der obersten Ebene auch bestimmte Implementierungsmethoden

Konkrete Vorlage (ConcrteClass)-Rolle

aufrufen, um eine oder mehrere abstrakte Methoden der übergeordneten Klasse zu implementieren, die als vorhanden sind Bestandteil der obersten Logik.

Jeder abstrakten Vorlage können mehrere konkrete Vorlagen entsprechen, und jede konkrete Vorlage verfügt über eine eigene Implementierung der abstrakten Methode (d. h. eine Komponente der Logik der obersten Ebene), sodass die Implementierung der Die Logik der obersten Ebene ist anders.

Anwendbarkeit

Implementieren Sie die unveränderlichen Teile eines Algorithmus einmal und überlassen Sie das variable Verhalten Unterklassen.

Gemeinsame Verhaltensweisen in jeder Unterklasse sollten extrahiert und in einer gemeinsamen übergeordneten Klasse konzentriert werden, um Codeduplizierung zu vermeiden.

Unterklassenerweiterung steuern.

Klassendiagramm

Template-Methodenmuster und seine PHP-ImplementierungTemplate-Methodenmuster und seine PHP-Implementierung

Instanz

<?php
abstract class AbstractClass { // 抽象模板角色
    public function templateMethod() { // 模板方法 调用基本方法组装顶层逻辑
        $this->primitiveOperation1();
        $this->primitiveOperation2();
    }
    abstract protected function primitiveOperation1(); // 基本方法
    abstract protected function primitiveOperation2();
}
class ConcreteClass extends AbstractClass { // 具体模板角色
    protected function primitiveOperation1() {}
    protected function primitiveOperation2(){}
 
}
 
$class = new ConcreteClass();
$class->templateMethod();
?>
Nach dem Login kopieren


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