Template Method Pattern

written by devangelist on August 7, 2012 in ASP.NET and Patterns with one Comment

Beim Template Method Pattern bzw. der Schablonenmethode werden Teilschritte eines Algorithmus variabel gehalten. Es gibt also eine abstrakte Klasse, die das Skelett definiert und die Klassen die davon erben, in welchen bestimmte Teile ausgetauscht werden können.
Am einfachsten durch ein Beispiel zu verstehen: Es gibt eine Maschine, welche aus den drei Schritten Start, Produce und End besteht. Diese drei Schritte muss es in jeder Maschine geben, was allerdings darin passiert, kann jede Maschine für sich entscheiden. Wichtig ist nur, dass von außen eine Methode Execute alle drei Schritte intern aufruft.

Es gibt somit eine abstrakte Klasse Machine, welche die drei Methoden Start, Produce und End als abstrakt definiert und welche somit in den Unterklassen implementiert werden müssen.

public abstract class Machine
{
    public void Execute()
    {
        this.Start();
        this.Produce();
        this.End();
    }

    protected abstract void Start();
    protected abstract void Produce();
    protected abstract void End();
}

Die konkrete Implementierung, zum Beispiel eine Pizza-Maschine, welche die drei Methoden vervollständigt.

public class PizzaMachine : Machine
{
    protected override void Start()
    {
        Console.WriteLine("Mach den ofen an...");
    }

    protected override void Produce()
    {
        Console.WriteLine("Pizza backen.");
    }

    protected override void End()
    {
        Console.WriteLine("Ofen ausmachen.");
    }
}

Oft wird dieses Prinzip auch als Hollywood-Prinzip genannt: “Dont call us, we call you!”.
Vorteil des Patterns ist die Aufteilung eines längeren Schrittes in mehrere, kürzere, wobei sich der Aufruf nicht ändert und diese Teilschritte von außen nicht bekannt sind.

Template Method Pattern: 1 Stern2 Sterne3 Sterne4 Sterne5 Sterne 5,00 von 5 Punkte, 1 abgegebene Stimmen.
Loading ... Loading ...

About the Author

Roberto Bez ist passionierter Webentwickler und TechLead bei der HolidayCheck AG. Für Roberto bedeutet das Entwickeln nicht nur Arbeit, sondern auch Freude, Motivation und täglich neue, aufregende Herausforderungen. Besonders gerne setzt er sich mit neuen Webtechnologien sowie Datenbanken aller Art auseinander und versucht diese in die tägliche Anwendungsentwicklung miteinzubringen. Neben dem Entwickeln trifft man ihn gerne Abends beim Laufen oder im Sommer bei Mountainbike-Touren durch die schönen Berge Südtirols.