SlideServe
Menu
Préférences
© SlideServe · v2026

Prototype Design Pattern Overview

wilma-hansen avatar
32 diapositives · 434 Views · Oct 28, 2014

Learn how to implement the Prototype design pattern in object-based software design to create objects by copying a prototype, hiding concrete classes from clients, and enabling runtime addition/removal of products.

Prototype Design Pattern Overview - slide 1
01 / 32Prototype Design Pattern Overview
1 / 17

Télécharger la présentation

Prototype Design Pattern Overview
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  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/