Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.

Ähnliche Präsentationen


Präsentation zum Thema: "Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral."—  Präsentation transkript:

1 Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral Object Patterns

2 Behavioral Patterns Algorithmen Zuständigkeiten zwischen Objekten/ Klassen Kommunikation zwischen Objekten/ Klassen Wie agieren Objekte/Klassen miteinander?

3 Template Method Pattern Ziel: –Möglichkeit zur Variierung eines Algorithmus –Hierbei festes Grundgerüst Umsetzung: –Abstrakter Grundalgorithmus –Subklassen definieren konkretes Verhalten

4 Template Method Pattern TemplateMethod() PrimitiveOperation1() PrimitiveOperation2() AbstractClass ConcreteClass PrimitiveOperation1() PrimitiveOperation2()... PrimitiveOperation1()... PrimitiveOperation2()...

5 Praxisbeispiel Haus + baueHaus() - ebneBoden() # doBaueRohbau() # doBaueDach()... ebneBoden(); doBaueRohbau(); doBaueDach();... Backsteinhaus # doBaueRohbau() # doBaueDach() Blockhaus # doBaueRohbau() # doBaueDach() Abstrakte Klasse Konkrete Klassen Template Method

6 Code abstract public class Haus { final public void baueHaus() { System.out.println("...baue Haus.."); ebneBoden(); doBaueRohbau(); doBaueDach(); System.out.println("fertig ist das Haus\n"); } final private void ebneBoden() { System.out.println("...ebne Boden..."); } abstract protected void doBaueRohbau(); abstract protected void doBaueDach(); }

7 Code public class Backsteinhaus extends Haus{ protected void doBaueRohbau() { System.out.println("...baue Backstein-Rohbau..."); } protected void doBaueDach() { System.out.println("...baue Backstein-Dach..."); } public static void main(String args[]) { Backsteinhaus b1 = new Backsteinhaus(); b1.baueHaus(); }

8 Ausgabe Wenn Blockhaus analog:...baue Haus......ebne Boden......baue Backstein-Rohbau......baue Backstein-Dach... fertig ist das Haus...baue Haus......ebne Boden......baue Blockhaus-Rohbau......baue Blockhaus-Dach... fertig ist das Haus

9 Folgerungen für Algorithmus feste Reihenfolge Subklassen können Schritte variieren (nicht Reihenfolge)

10 Vorteile Beim Haus: –Beliebig viele Häuser mit unterschiedlicher Bauweise (->Verhalten) denkbar –Code doEbneBoden() muss nur einmal geschrieben werden –Dach ist an richtiger Stelle

11 Vorteile Allgemein: –Einmalige Implementierung von unveränderlichem Verhalten, Subklassen können variables Verhalten implementieren –Vermeidung von Code Duplication –Kontrolle der Erweiterungen der Subklassen

12 Auswirkungen Fundamentale Technik für Wiederverwendung von Code Invertierte Kontrollstruktur ( -> Hollywood-Prinzip)

13 Quellen Print: –Gamma, Helm, Johnson, Vlissides, Design Patterns, Addison-Wesley Internet: –http://www.agcs.com/supportv2/techpapers/patter ns Bei Fragen: –jd05@hdm-stuttgart.de –nd06@hdm-stuttgart.de


Herunterladen ppt "Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral."

Ähnliche Präsentationen


Google-Anzeigen