1 / 32

Software Design Patterns

Software Design Patterns. Prototype. Aufgabe : Erzeugungsmuster (Creational Pattern). Gültigkeitsbereich : objektbasierend. Zweck : Bestimme die Arten zu erzeugender Objekte durch die Verwendung eines prototypischen Exemplars und erzeuge neue Objekte durch Kopieren dieses Prototypen.

Download Presentation

Software Design Patterns

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Design Patterns Prototype

  2. Aufgabe: Erzeugungsmuster (Creational Pattern) Gültigkeitsbereich: objektbasierend

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

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

  5. Anwendbarkeit: • System soll unabhängig davon sein, wie seine Produkte erzeugt, zusammengesetzt und repräsentiert werden

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

  7. 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. 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. Struktur:

  10. Konsequenzen: • versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder)

  11. Konsequenzen: • versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) • Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten

  12. 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. 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. 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. 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. 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. Implementierung: • statisch typisierten Programmiersprachen wie C++

  18. Implementierung: • statisch typisierten Programmiersprachen wie C++ • Verwendung von Prototypenverwalter

  19. Implementierung: • statisch typisierten Programmiersprachen wie C++ • Verwendung von Prototypenverwalter • Implementierung der Clone()-Operation • „shallow copy“ – „deep copy“

  20. Implementierung: • statisch typisierten Programmiersprachen wie C++ • Verwendung von Prototypenverwalter • Implementierung der Clone()-Operation • „shallow copy“ – „deep copy“ • Initialisierung geklonter Objekte

  21. Beispielcode: class Swimmer { String name; int age; String club; float time; boolean female; }

  22. 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. 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. 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. 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. Beispielcode: Nach „Clone“

  27. Beispielcode: Nach „Refresh“:

  28. Verwandte Muster: • Abstrakte Fabrikmuster (Abstract Factory) • Kompitions- und Dekorierermuster • (Composite, Decorator)

  29. Prototype im nicht-Computerbereich:

  30. 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

  31. Internetquellen: • http://www.fh-wedel.de/~si/seminare/ws97/Ausarbeitung/2.Winter/gamma10.htm • http://home.earthlink.net/~huston2/dp/prototype.html • www2.informatik.uni-erlangen.de/Lehre/SS01/XML/Docs/Erzeugungsmuster.pdf • Catalog of Non-Software Examples of Design Patterns: • http://www.agcs.com/supportv2/techpapers/patterns/papers/tutnotes/

More Related