|
Abb. 2: Abstrakte Definitionen des Beispiels
|
Der «Director» des Beispiels wird durch die Klasse ShipManufacturer implementiert. Wird ein Objekt
dieser Kasse instanziiert, so muss dem Konstuktor ein «Builder»-Objekt übergeben werden. Die Ausführung
der Konstruktion des jeweiligen Produktes wird durch den Aufruf der Methode construct() ausgeführt
(s.a. Abb. 2):
public class ShipManufacturer
{
public ShipManufacturer( Shipyard shipyard ) {...}
public void construct() {...}
}
Die abstrakte Klasse Shipyard stellt somit den «Builder» dar. Sie definiert die Methoden und
- indirekt - den Ablauf den Konstruktionsprozess zur Konstruktion eines «Product» Ship :
public abstract class Shipyard
{
public abstract void buildShip();
public void buildHull() {}
public void buildEngine() {}
}
Durch die abstrakte Definition der Methode buildShip() wird sichergestellt, dass Instanzen der
«ConcreteProduct»-Objekte durch die Subklasssen erstellt werden. Die leeren Implementationen der beiden anderen
Methoden erlaubt es folglich, weniger komplex gestaltete Ship -Untertypen zu definieren.
Das «Product» Ship definiert 3 abstrakte Klassen, wobei die Klasse Ship
die Hauptklasse darstellt. Weiterhin werden die abstrakten Klassen Hull und Engine
spezifiziert, die über Kompositionsrelationen mit der Klasse Ship verbunden sind (s. Abb. 2).
|