Design Pattern: Builder

Habe ich mich für eine gute Beispiel einer Builder pattern (in C#), kann aber nicht finden, entweder, weil ich nicht verstehe, das Builder pattern oder ich bin versucht, etwas zu tun, die nie vorgesehen war. Zum Beispiel, wenn ich zu einem abstrakten Automobil-und abstract-generator-Methoden zu erstellen, KFZ-Teile, ich sollte in der Lage sein zu senden alle 30 meine Entscheidungen an den Direktor, haben Sie bauen die Teile, die ich brauche, dann Baue mein Auto. Unabhängig davon, welches Auto, LKW, halb, etc. produziert, ich sollte in der Lage zu "fahren" Sie in genau der gleichen Weise.

Erste problem ist, die meisten Beispiele harte code-Eigenschaft Werte an der Beton-Teile, von denen ich wirklich denke, sollte aus einer Datenbank stammen. Ich dachte, die Idee war zu senden, dass meine Entscheidungen der Direktorin (aus einer Datenquelle) und haben die builder erstellen ein maßgeschneidertes Produkt, basierend auf meine Daten.

Zweite problem ist, ich will die builder-Methoden zu erschaffen, die wirklich die Teile dann weisen Sie Sie auf das Produkt, nicht pass strings, sondern real stark typisierten Produkt-Teile.

Zum Beispiel, ich möchte ein Formular erstellen, on the fly durch eine Builder-Herstellung von form-Feldern für mich, darunter ein label, einen Eingabe-Abschnitt, überprüfung, etc. Auf diese Weise kann ich Lesen das Objekt aus meiner ORM, check-out der Metadaten des Objekts verfügt, übergibt dieses an meine Builder und fügen Sie den neu erstellten Benutzer Steuern Ergebnis meiner web-Formular.

Doch jedes Builder-Beispiel finde ich nur hart codierte Daten, anstatt die Entscheidungen, die von der Haupt-code, um den generator und das Heraustreten ein maßgeschneidertes Produkt. Alles scheint eine große statische case-Anweisung. Zum Beispiel, wenn ich drei Parameter, die mit 10 Entscheidungen jeden, ich will nicht bauen, die 30 Beton-Builder Methoden, ich will nur genug, um die Herstellung, die Eigenschaften meines Produktes erfordert, die vielleicht nur drei.

Ich bin versucht zu haben, die Leiter gibt es in der Haupt-code nur. Es sollte ein Weg, um automatisch zu bestimmen, welche konkreten generator-Methode aufrufen, ähnlich wie Polymorphismus und Methode überlastungen (obwohl, dass ist ein sehr schlechtes Beispiel) anstelle der Verwendung einer case-Anweisung innerhalb der Muster. (Jedes mal muss ich hinzufügen ein neues Produkt geben, werde ich ändern müssen die vorhandenen Direktor, das ist schlecht).

InformationsquelleAutor der Frage Zachary Scott | 2009-03-30

Schreibe einen Kommentar