[JAVA] Muster der Vorlagenmethode

Grob Vorlagenmethode

Ein Entwurfsmuster, in dem eine Oberklasse das Verarbeitungsframework definiert und Unterklassen den spezifischen Inhalt definieren, wird als Vorlagenmethode bezeichnet. Es müssen zwei Rollen angezeigt werden, die Rolle der abstrakten Klasse und die Rolle der konkreten Klasse.

Die Rolle der abstrakten Klasse

Die AbstractClass-Rolle implementiert die Vorlagenmethode. Deklarieren Sie außerdem die in der Vorlagenmethode verwendete abstrakte Methode.

package templateMethod;

public abstract class AbstractDisplay {
	public abstract void open();
	public abstract void print();
	public abstract void close();

	public final void display() {
		open();
		for(int i = 0; i < 5; i++) {
			print();
		}
		close();
	}
}

Die Rolle der Betonklasse

Implementieren Sie konkret die abstrakte Methode, die durch die Rolle von AbstractClass definiert ist. Die hier implementierte Methode wird von der Template-Methode aufgerufen, die die Rolle von Abstract spielt.

package templateMethod;

public class CharDisplay extends AbstractDisplay {
	private char ch;

	 public CharDisplay(char ch) {
		 this.ch = ch;
	}

	@Override
	public void open() {
		System.out.print("<<");
	}

	@Override
	public void print() {
		System.out.print(ch);
	}

	@Override
	public void close() {
		System.out.println(">>");
	}
}
package templateMethod;

public class StringDisplay extends AbstractDisplay{
	private String string;
	private int width;

	 public StringDisplay(String string) {
		 this.string = string;
		 this.width = string.getBytes().length;
	}

	@Override
	public void open() {
		printLine();
	}

	@Override
	public void print() {
		System.out.println("|" + string + "|");
	}

	@Override
	public void close() {
		printLine();
	}

	private void printLine() {
		System.out.print("+");
		for (int i = 0; i < width; i++) {
			System.out.print("-");
		}
		System.out.println("+");
	}
}

Anrufer

package templateMethod;

public class Main {

	public static void main(String[] args) {

		AbstractDisplay cd = new CharDisplay('c');
		cd.display();

		AbstractDisplay sd = new StringDisplay("Hello,World");
		sd.display();

	}
}
//Ergebnis
//<<ccccc>>
//+-----------+
//|Hello,World|
//|Hello,World|
//|Hello,World|
//|Hello,World|
//|Hello,World|
//+-----------+

Gemeinsame Logik

Das Muster der Vorlagenmethode kann zur Standardisierung der Logik verwendet werden. In diesem Beispiel wird der Algorithmus in der Vorlagenmethode der Superklasse beschrieben, sodass es nicht erforderlich ist, den Algorithmus einzeln auf der Unterklassenseite zu beschreiben.

Wenn Sie mehrere ConcreteClasses durch Kopieren ohne Verwendung der Vorlagenmethode erstellen Wenn Sie später einen Fehler in der Betonklasse finden, müssen Sie den Fehler in allen Betonklassen beheben. Wenn Sie das Muster der Vorlagenmethode verwenden, auch wenn Sie einen Fehler in der Vorlagenmethode finden Sie müssen lediglich die Vorlagenmethode ändern.

Recommended Posts

Muster der Vorlagenmethode
Muster der Vorlagenmethode
Entwurfsmuster ~ Vorlagenmethode ~
Entwurfsmuster nach Ruby Template-Methode Musternotiz
Factory Method Pattern
C # gekautes Designmuster: TemplateMethod
Factory Method Muster
[Entwurfsmuster] Allgemeine Logik mit der Vorlagenmethode
Entwurfsmuster ~ Fabrikmethode ~
Überdenken des Java8-Lambda-Ausdrucks- und Stream-Entwurfsmusters - Muster der Vorlagenmethode -
Java-Anfänger-Entwurfsmuster (Factory-Methodenmuster)
Prototypmuster
Erinnerungsmuster
Vermittlermuster
Iteratormuster
Zusammengesetztes Muster
to_i Methode
Java (Methode)
Builder-Muster
Brückenmuster
Methode getRequestDispatcher ()
Befehlsmuster
Zusammenführungsmethode
Builder-Muster
Strategiemuster
Iteratormuster
Besuchermuster
Kartenmethode
Methode einschließen
Proxy-Muster
Zusammengesetztes Muster
Abstrakte Methode
Methode initialisieren
Singleton-Muster
Listenmethode
Singleton-Muster
Prototypmuster
setzt Methode
Java-Methode
Klassenmethode
Fassadenmuster
Save! -Methode
getParameter-Methode
[Java] -Methode
Mod Vorlage
Dekorationsmuster
Fliegengewichtsmuster
Dekorateur Muster
Vermittlermuster
private Methode
Fassadenmuster
Besuchermuster
Schienenmethode
Brückenmuster
[Java] -Methode