Heim >Java >javaLernprogramm >Java-Entwurfsmuster: Beispielanalyse für Vorlagenmethodenmuster
Template Method Pattern (Template Method
) definiert das Algorithmusgerüst in einer Operation und verzögert einige Schritte des Algorithmus in Unterklassen, sodass Unterklassen die Algorithmusstruktur nicht neu definieren können der Algorithmus. Template Method
)定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
模板方法模式包含以下主要角色:
抽象类(Abstract Class
):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。
抽象方法(Abstract Method
) :一个抽象方法由抽象类声明、由其具 体子类实现。
具体方法(Concrete Method
) :一个具体方法由一个抽象类或具体类声明并实现,其子类可以进行覆盖也可以直接继承。
钩子方法(Hook Method
) :在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种。一般钩子方法是用于判断的逻辑方法,这类方法名一般为isXxx,返回值类型为boolean类型。
模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。
基本方法:是实现算法各个步骤的方法。基本方法又可以分为三种:
具体子类(Concrete Class
Abstrakte Klasse
): Verantwortlich für die Bereitstellung der Gliederung eines Algorithmus und Skeletts. Es besteht aus einer Vorlagenmethode und mehreren Grundmethoden. Abstrakte Methode (Abstrakte Methode
): Eine abstrakte Methode wird von einer abstrakten Klasse deklariert und von ihrer konkreten Unterklasse implementiert.
Konkrete Methode
): Eine konkrete Methode wird von einer abstrakten Klasse oder konkreten Klasse deklariert und implementiert, und ihre Unterklassen können direkt überschreiben oder erben.
Hook-Methode
): Sie wurde in der abstrakten Klasse implementiert, einschließlich logischer Methoden zur Beurteilung und leerer Methoden, die von Unterklassen neu geschrieben werden müssen. Die allgemeine Hook-Methode ist eine logische Methode zur Beurteilung. Der Name dieser Methode lautet im Allgemeinen isXxx und der Rückgabewerttyp ist boolesch. Template-Methode: Definiert das Grundgerüst des Algorithmus und ruft seine Grundmethoden in einer bestimmten Reihenfolge auf.Vorteile:
Grundlegende Methode: Dies ist die Methode zur Implementierung jedes Schritts des Algorithmus. Grundlegende Methoden können in drei Typen unterteilt werden:
Konkrete Unterklasse (Konkrete Klasse
): Implementiert die in der abstrakten Klasse definierten abstrakten Methoden und Hook-Methoden, bei denen es sich um eine logische Komposition der obersten Ebene handelt Schritte.
【Fall】Die Schritte zum Pfannenrühren sind festgelegt und in Schritte wie das Eingießen von Öl, das Erhitzen von Öl, das Eingießen von Gemüse, das Eingießen von Gewürzen und das Anbraten unterteilt. Sie können aber auch verschiedene Gemüsesorten und verschiedene Soßen hinzufügen. Verwenden Sie nun den Vorlagenmethodenmodus, um es mit Code zu simulieren ------ ------Das Öl einfüllen. Das Öl erhitzen. Den Kohl hinzufügen. Salz und MSG hinzufügen. Anbraten und unter Rühren anbraten. Der Vorgang ist mit Exit-Code 0 abgeschlossen. Vorteile und Nachteile des Vorlagenmethodenmusters
1. Verbessern Sie die Wiederverwendbarkeit des Codes, fügen Sie denselben Teil des Codes in die abstrakte übergeordnete Klasse ein und fügen Sie unterschiedliche Codes in verschiedene Unterklassen ein. 2. Eine übergeordnete Klasse ruft die Operation ihrer Unterklasse auf, und unterschiedliche Verhaltensweisen werden durch die spezifische Implementierung der Unterklasse erweitert und entsprechen dem „Öffnungs- und Schließprinzip“.
Nachteile:1. Jede unterschiedliche Implementierung muss eine Unterklasse definieren, was zu einer Erhöhung der Anzahl der Klassen, einem größeren System und einem abstrakteren Design führt. 2. Die abstrakten Methoden in der übergeordneten Klasse werden von der Unterklasse implementiert, und das Ausführungsergebnis der Unterklasse wirkt sich auf das Ergebnis der übergeordneten Klasse aus, was zu einer umgekehrten Kontrollstruktur führt, was die Schwierigkeit beim Lesen des Codes erhöht.
Verwendungsszenarien
1 Die Gesamtschritte des Algorithmus sind sehr fest, aber wenn einzelne Teile flüchtig sind, können Sie das Vorlagenmethodenmuster verwenden, um die leicht variablen Teile für die Implementierung durch Unterklassen zu abstrahieren.
Das obige ist der detaillierte Inhalt vonJava-Entwurfsmuster: Beispielanalyse für Vorlagenmethodenmuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!