Upload
filabert-boche
View
104
Download
0
Embed Size (px)
Citation preview
Universität zu KölnInstitut für Historisch-Kulturwissenschaftliche InformationsverarbeitungProf. Dr. M. ThallerAM1: Re-usable Content in 3D und SimulationssystemenSoSe 2011Dennis Kiewning
Design Patterns
Creational Patterns
Creational Patterns
1.Was sind Creational Patterns?
- Entwürfe, die Objekterzeugungsprozesse abstrahieren
1) Abstract Factory2) Builder 3) Factory Method4) Prototype5) Singleton
2. Structural Patterns
3. Behavioral Patterns
Creational Patterns - Abstract Factory
Was ist die Abstract Factory?
- Schnittstelle zur Erzeugung einer Familie von Objekten
Wann benutze ich die Abstract Factory?
1. Ein System soll unabhängig von der Art/Erzeugung seiner Produkte arbeiten 2. Ein System soll mit einer oder mehreren Produktfamilien konfiguriert sein3. Eine Gruppe von Produkten soll erzeugt und gemeinsam genutzt werden4. Eine Klassenbibliothek soll Schnittstellen von Produkten ohne deren Implementierung bereitstellen.
Creational Patterns - Abstract Factory
AbstractFactory: definiert Schnittstelle zur Erzeugung abstrakter Produkte einer Produktfamilie ConcreteFactory: erzeugt konkrete Produkte einer Produktfamilie
AbstractProduct: definiert eine Schnittstelle für eine Produktart Product: definiert ein konkretes Produkt einer Produktart
Client: verwendet die Schnittstellen der abstrakten Fabrik und der abstrakten Produkte
Creational Patterns - Builder
Was ist der Builder?
- Eine Trennung der Konstruktion komplexer Objekte von deren Repräsentation
Wann benutze ich einen Builder?
1. Zu einem Objekt sollen unterschiedliche Repräsentationen existieren2. Die Konstruktion eines komplexen Objekts soll unabhängig von der
Erzeugung der einzelner Bestandteile sein
Creational Patterns - Builder
Builder: spezifiziert eine abstrakte Schnittstelle zur Erzeugung der Teile eines komplexen Objektes Concrete Builder: erzeugt die Teile des komplexen Objekts durch Implementierung der Schnittstelle
Director: konstruiert ein komplexes Objekt unter Verwendung der Schnittstelle des Builders
Product: repräsentiert das zu konstruierende komplexe Objekt.
Creational Patterns - Builder
Builder -> Converter: spezifiziert eine abstrakte Schnittstelle zur Erzeugung der Teile eines komplexen Objektes
ConcreteBuilder -> ASCIIConverter etc.: erzeugt die Teile des komplexen Objekts durch Implementierung der Schnittstelle
Director -> Reader: konstruiert ein komplexes Objekt unter Verwendung der Schnittstelle des Builders
Creational Patterns - Factory Method
Was macht die Factory Method?
- Ein Objekt durch Aufruf einer Methode statt durch direkten Aufruf eines Konstruktors erzeugen
Wann benutze ich die Factory Method?
1. wenn eine Klasse die von ihr zu erzeugenden Objekte nicht kennen soll2. wenn Unterklassen bestimmen sollen welche Objekte erzeugt werden
Creational Patterns - Factory Method
Creator: deklariert die FactoryMethod um ein Produkt zu erzeugen
ConcreteCreator: überschreibt die Fabrikmethode, um die entsprechenden Produkte zu erzeugen
ConcreteProduct : definiert eine Schnittstelle für eine Produktart
Creational Patterns - Factory Method
BaseCreator: deklariert die FactoryMethod um ein Produkt zu erzeugen
ConcreteCreatorB/A: überschreibt die Fabrikmethode, um die entsprechenden Produkte zu erzeugen
BaseProduct : definiert eine Schnittstelle für eine Produktart
Creational Patterns - Prototype
Was macht ein Prototype?
- Neue Instanzen werden aufgrund prototypischer Instanzen erstellt. Dabei wird eine Vorlage kopiert und an neue Bedürfnisse angepasst.
Wann benutze ich einen Prototype?
1. wenn sich die Objekte ähneln2. die zu instanziierenden Klassen erst zur Laufzeit bekannt sind
Creational Patterns - Prototype
Prototype: definiert eine Schnittstelle zur Kopie eines Objektes
ConcretePrototype: kopiert sich selbst durch Implementation der Schnittstelle
Client: erzeugt neue Objekte als Kopie bestehender Objekte und modifiziert sie.
Creational Patterns - Singleton
Was macht ein Singleton?
- Es verhindert, dass von einer Klasse mehr als ein Objekt erzeugt werden kann
Wann benutze ich ein Singleton?
1. nur ein Objekt zu einer Klasse existieren darf und ein einfacher Zugriff auf dieses Objekt benötigt wird
2. das einzige Objekt durch Unterklassenbildung spezialisiert werden soll
Creational Patterns - Singleton
Vielen Dank für die Aufmerksamkeit!