ich die Builder PatternBuilder-Muster: Warum erstellt der Director das Objekt?
In dem obigen Link (Java-Beispiel) lerne, bemerkte ich, dass die Builder-Schnittstelle mehr Komponenten zu konstruieren bietet. Neben dem Aufruf rufen wir auch getProduct() auf.
Der Punkt, den ich nicht verstehe, ist, warum der Direktor all diese Komponenten-Konstrukt-Methoden eins nach dem anderen aufrufen und das Ergebnis am Ende bekommen muss.
/** "Director" */
class Waiter {
private PizzaBuilder pizzaBuilder;
public void setPizzaBuilder(PizzaBuilder pb) { pizzaBuilder = pb; }
public Pizza getPizza() { return pizzaBuilder.getPizza(); }
public void constructPizza() {
pizzaBuilder.createNewPizzaProduct();
pizzaBuilder.buildDough(); // construct component 1
pizzaBuilder.buildSauce(); // construct component 2
pizzaBuilder.buildTopping(); // construct component 3
}
}
Warum gehen wir nicht enthalten den Code für die Komponenten 1, 2, 3 in der ConcreteBuilder Klasse es sich von selbst, anstatt in dem Direktor, und in der Tat die Beseitigung der Direktor Schicht zu konstruieren.
Ich verstehe, dass der obige Ansatz das Builder-Muster in etwas anderes verwandeln könnte, aber ich verstehe nicht, warum der Director die Arbeit Schritt für Schritt erledigt. Was ist der Vorteil? Wenn es mehrere Directors gibt, wird es doppelten Code geben, richtig? Ich verstehe nicht das Motiv hinter der Ausführung des Builder-Musters ...
UPDATE: Konzentriert sich das Builder-Muster auf das Anbieten einer anpassbaren Komponentenauswahl beim Erstellen eines größeren komplexen Objekts? Ansonsten, ab sofort, sehe ich nicht den Punkt in der Einführung einer zusätzlichen Schicht, der Direktor.
Auch wenn das der Fall ist, könnte Dekorator-Muster eine bessere Idee sein, um dasselbe durch dynamisches Anpassen der Komponenten zu erreichen. Irgendwo fehlt mir der Punkt hinter dem Builder .. :(
In der Tat eine gute Frage, auch nach dem Lesen der Antworten bekomme ich immer noch nicht, warum wir Regisseur Klasse brauchen. Es kann benutzerdefinierte Implementierung bieten, dann macht es Sinn. Sonst kein Punkt – Rohit