Design Pattern #7

Autor: NathalieOhneHerz GitHub

Template Pattern

Sei ein Vorbild.

Hauptartikel: [Design Pattern #1] Was sind die Design patterns


Was ist das Template Pattern und wann verwendet man es?

Bestimmte Programmabläufe mögen es, gebündelt und abstrahiert zu werden. Ein Spiel zum Beispiel. Es hat verschiedenen Routinen die während des Spieles ablaufen und man kann gewisse Routinen abstrahieren und in einer abstrakten Klasse zusammenfassen. Das Template Pattern lässt sich ganz klar den Verhaltensmustern zuordnen. Mann kann dadurch die einzelnen Schritte eines Programmes besser gliedern und in einzelne Methoden aufspalten. So kann man den Verlauf besser nachvollziehen und modellieren und kann kleinschrittiger und präziser abstrahieren (siehe Beispiel und denke weiter: Nicht jeder muss die gesamte liveWholeLife-Methode implementieren sondern kann lediglich Teile verändern).


Modellierung


Implementierung in Java

package de.nathalieoneill.devtek.template; /** * @author Nathalie */ public abstract class Life { protected abstract void born(); protected abstract void live(); protected abstract void die(); public void liveWholeLife() { this.born(); this.live(); this.die(); } }
package de.nathalieoneill.devtek.template; /** * @author Nathalie */ public class LifeOfDog extends Life { protected void born() { System.out.println("Dog was born!"); } protected void live() { System.out.println("Dog is living!"); } protected void die() { System.out.println("Dog is dying!"); } }
package de.nathalieoneill.devtek.template; /** * @author Nathalie */ public class LifeOfHuman extends Life { protected void born() { System.out.println("Human was born!"); } protected void live() { System.out.println("Human is living!"); } protected void die() { System.out.println("Human is dying!"); } }

Die Verwendung sähe dann so aus:

package de.nathalieoneill.devtek.template; /** * @author Nathalie */ public class DevTek { public static void main(String[] args) { Life life = new LifeOfDog(); life.liveWholeLife(); life = new LifeOfHuman(); life.liveWholeLife(); } }

Ich hoffe, dass ich euch das Template Pattern näher bringen konnte.

Mit freundlichen Grüßen
Nathalie