Frage

Ich suche nach einer Beispielimplementierung des Template-Methodenmusters in Java.Angenommen, ich möchte zum Beispiel eine generische Klasse erstellen, die eine Schleife durchlaufen kann List<T> und führen Sie eine Vorlagenmethode mit Signatur aus void execute(T t) auf jeden Artikel des Typs T in der Liste.

War es hilfreich?

Lösung

Es gibt ein ziemlich klares Java-Beispiel in der Wikipedia-Artikel für das Template-Methodenmuster.

Das Grundkonzept des Musters besteht darin, dass die variablen Teile des Codes in separate Methoden aufgeteilt werden.Dadurch können die gemeinsam genutzten Teile in einer Oberklasse verbleiben, während die abgeleiteten Klassen die Methoden implementieren, die den variablen Teilen entsprechen, und bei Bedarf ein anderes Verhalten bereitstellen.

Wenn Sie in der Nähe der allgemein akzeptierten Implementierung des Musters bleiben möchten, sollte Ihr Code in diese Richtung gehen:

public abstract class TemplateMethodLoop<T> {
    public abstract void execute(T t);

    public void loop(List<T> array) {
        for (T t : array) {
            this.execute(t);
        }
    }
}

public class TemplateMethodPatternClient {
    public void stringListPrinter(List<String> stringList) {
        new TemplateMethodLoop<String>() {
            public void execute(String string) {
                System.out.println(string);
            }
        }.loop(stringList);
    }
}

Beachten Sie, dass in diesem Fall die konkrete Implementierung des erforderlichen Verhaltens in der anonymen inneren Klasse innerhalb der liegt stringListPrinter() methode, die erweitern der TemplateMethodLoop Superklasse.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top