// Basisklasse für Kaffee oder Tee public abstract class KaffeeOderTee { // Generelles "Rezept" zum Erstellen von Kaffee oder Tee // Dieser Ablauf ist immer gleich. // Das ist ein Teil des "Template", eine "Maske" für // die Erstellung eines Objektes, deren Methoden sowohl // in Teilen gleich, als auch unterschiedlich sein können. final void zubereitungsRezept() { wasserKochen(); aufGiessen(); inTasseEinfuellen(); zutatenHinzufuegen(); } // Diese Methoden sind bei Kaffee und Tee immer gleich // (gleiche Algorithmen -> Implementation direkt in der // Basisklasse) void wasserKochen() { System.out.println("Wasser wird heiß gemacht..."); } void inTasseEinfuellen() { System.out.println(this.getClass().getName() + " wird in die Tasse eingefüllt..."); } // Diese Methoden sind bei Kaffee oder Tee verschieden, // und werden daher nur in der konkreten Klasse Tee oder // Kaffee implementiert (müssen dort auch implementiert werden) abstract void aufGiessen(); abstract void zutatenHinzufuegen(); }