Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Harald Köbler Software Design Patterns Prototype.

Ähnliche Präsentationen


Präsentation zum Thema: "Harald Köbler Software Design Patterns Prototype."—  Präsentation transkript:

1 Harald Köbler Software Design Patterns Prototype

2 Harald Köbler Aufgabe: Erzeugungsmuster (Creational Pattern) Gültigkeitsbereich: objektbasierend

3 Harald Köbler Zweck: Bestimme die Arten zu erzeugender Objekte durch die Verwendung eines prototypischen Exemplars und erzeuge neue Objekte durch Kopieren dieses Prototypen.

4 Harald Köbler Motivation: Das Erzeugen einer Instanz einer Klasse ist sehr zeitraubend oder komplex. Es werden Kopien der original Instanz erzeugt und abgeändert.

5 Harald Köbler Anwendbarkeit: System soll unabhängig davon sein, wie seine Produkte erzeugt, zusammengesetzt und repräsentiert werden

6 Harald Köbler Anwendbarkeit: System soll unabhängig davon sein, wie seine Produkte erzeugt, zusammengesetzt und repräsentiert werden Klassen werden erst zur Laufzeit spezifiziert

7 Harald Köbler Anwendbarkeit: System soll unabhängig davon sein, wie seine Produkte erzeugt, zusammengesetzt und repräsentiert werden Klassen werden erst zur Laufzeit spezifiziert parallele Klassenhierarchien vermeiden

8 Harald Köbler Anwendbarkeit: System soll unabhängig davon sein, wie seine Produkte erzeugt, zusammengesetzt und repräsentiert werden Klassen werden erst zur Laufzeit spezifiziert parallele Klassenhierarchien vermeiden Exemplare einer Klasse haben nur wenige Zustandskombinationen

9 Harald Köbler Struktur:

10 Harald Köbler Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder)

11 Harald Köbler Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten

12 Harald Köbler Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten Hinzufügen und entfernen von Produkten zur Laufzeit

13 Harald Köbler Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten Hinzufügen und entfernen von Produkten zur Laufzeit Spezifikation neuer Objekte durch Variation von Werten

14 Harald Köbler Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten Hinzufügen und entfernen von Produkten zur Laufzeit Spezifikation neuer Objekte durch Variation von Werten Spezifikation neuer Objekte durch Variation der Struktur

15 Harald Köbler Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten Hinzufügen und entfernen von Produkten zur Laufzeit Spezifikation neuer Objekte durch Variation von Werten Spezifikation neuer Objekte durch Variation der Struktur Verringerte Unterklassenbildung

16 Harald Köbler Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten Hinzufügen und entfernen von Produkten zur Laufzeit Spezifikation neuer Objekte durch Variation von Werten Spezifikation neuer Objekte durch Variation der Struktur Verringerte Unterklassenbildung Wichtig: jede Unterklasse von Prototype muss die Operation Clone() implementieren

17 Harald Köbler Implementierung: statisch typisierten Programmiersprachen wie C++

18 Harald Köbler Implementierung: statisch typisierten Programmiersprachen wie C++ Verwendung von Prototypenverwalter

19 Harald Köbler Implementierung: statisch typisierten Programmiersprachen wie C++ Verwendung von Prototypenverwalter Implementierung der Clone()-Operation shallow copy – deep copy

20 Harald Köbler Implementierung: statisch typisierten Programmiersprachen wie C++ Verwendung von Prototypenverwalter Implementierung der Clone()-Operation shallow copy – deep copy Initialisierung geklonter Objekte

21 Harald Köbler Beispielcode: class Swimmer { String name; int age; String club; float time; boolean female; }

22 Harald Köbler Beispielcode: public class SwimData implements Cloneable { Vector swimmers; public SwimData(String filename) { String s = ""; swimmers = new Vector(); //open data file InputFile f = new InputFile(filename); s= f.readLine(); //read in and parse each line while(s != null) { swimmers.addElement(new Swimmer(s)); s= f.readLine(); } f.close(); }

23 Harald Köbler Beispielcode: Liste in GUI anzeigen: swList.removeAll(); //clear list for (int i = 0; i < sdata.size(); i++) { sw = sdata.getSwimmer(i); swList.addItem(sw.getName()+" "+sw.getTime()); }

24 Harald Köbler Beispielcode: Liste in GUI anzeigen: swList.removeAll(); //clear list for (int i = 0; i < sdata.size(); i++) { sw = sdata.getSwimmer(i); swList.addItem(sw.getName()+" "+sw.getTime()); } sxdata = (SwimData)sdata.clone(); sxdata.sortByTime(); // re-sort cloneList.removeAll(); // clear list

25 Harald Köbler Beispielcode: Geklonte Liste in GUI anzeigen: for(int i = 0; i< sxdata.size(); i++) { sw = sxdata.getSwimmer(i); cloneList.addItem(sw.getName()+ +sw.getTime()); }

26 Harald Köbler Beispielcode: Nach Clone

27 Harald Köbler Beispielcode: Nach Refresh:

28 Harald Köbler Verwandte Muster: Abstrakte Fabrikmuster (Abstract Factory) Kompitions- und Dekorierermuster (Composite, Decorator)

29 Harald Köbler Prototype im nicht-Computerbereich:

30 Harald Köbler

31 Harald Köbler Literaturquellen: Design Patterns, AW-Verlag Gamma, Helm, Johnson, Vlissides Entwurfsmuster, AW-Verlag Übersetzt Dirk Riehle The Design Patterns – Java Companion AW-Verlag, James W. Cooper

32 Harald Köbler Internetquellen: www2.informatik.uni-erlangen.de/Lehre/SS01/XML/Docs/Erzeugungsmuster.pdf Catalog of Non-Software Examples of Design Patterns:


Herunterladen ppt "Harald Köbler Software Design Patterns Prototype."

Ähnliche Präsentationen


Google-Anzeigen