Entwurfsmuster und Frameworks - Erbauer
Sebastian Stenzel
6. November 2008
1 / 12
Beschreibung I
Klassifikation: objektbasiertes Erzeugungsmuster
Zweck: Trennung Konstruktion von komplexen Objekten und seiner Repr¨asentation.
⇒ Ein Konstruktionsprozess kann unterschiedliche Repr¨asentationen erzeugen.
Anwendungsbeispiel: RTF-Leser soll Dokumente einlesen und darstellen. Des Weiteren soll eine Konvertierung in verschiedene Textformate m¨oglich sein.
⇒ unterschiedliche Repr¨asentationen des
Struktur
3 / 12
Teilnehmer
Erbauer: Abstrakte Schnittstelle zum Erzeugen von Teilen KonkreterErbauer:
Implementierung der Erbauerschnittstellen definiert und verwaltet Repr¨asentation besitzt Produkt-R¨uckgabeschnittstelle
Direktor:konstruiert Produkt mit Erbauerschnittstelle Produkt:repr¨asentiert komplexes Objekt
Interaktionen I
5 / 12
Interaktionen II
Klient erzeugt Direktorobjekt und konfiguriert es mit entsprechendem Erbauerobjekt
Direktor informiert Erbauer wenn Teile des Produkts erbaut werden sollen
Erbauer arbeitet Anfrage des Direktors ab und f¨ugt Teile dem Produkt hinzu
Klient erh¨alt das Produkt vom Erbauer
Beispiel - Fahrzeug
Fahrzeug besteht aus R¨adern, Motor, Karosserie
Es existieren unterschiedliche Klassen dieser Komponenten (z.B. 50PS Motor und 300PS Motor)
Zwei Fahrzeugklassen:Gel¨andewagenund Limousine
7 / 12
Beispiel - Struktur
Beispiel - Interaktionen
9 / 12
Konsequenzen
Variation der internen Repr¨asentation eines Produkts:
interne Struktur und Konstruktionsprozeß wird versteckt Isolierung des Codes zur Konstruktion und
Repr¨asentation:
Kapselung des Konstruktionsprozesses und der Repr¨asentation
⇒ Klient kennt keine interne Strukturen zum Erstellen des Produkts
Genauere Steuerung des Konstruktionsprozesses:
Produkt wird Schritt f¨ur Schritt vom Direktor erzeugt
Implementierung
Konstruktionsschnittstelle:
Erbauerklassenschnittstelle muss allgemein genug sein, damit Konstruktion aller Produkte m¨oglich ist
Keine abstrakte Produktklasse:
Meist unterscheiden sich Produkte so stark, dass eine gemeinsame Oberklasse kaum einen Gewinn bringt.
Leere Methode als Defaultimplementierung in der Erbaueroberklasse:
Baue-Operationen nicht rein virtuell
⇒ Konkreter Erbauer muss nicht alle Methoden implementieren
11 / 12
Variation
Implementierung des Produkts in Erbauer-Schnittstelle