Der Builder-Modus in Delphi erweitert den grundlegenden Builder-Modus. Weitere Informationen zum Builder-Modus finden Sie unter [Gam+]
Trennen Sie die Konstruktion eines komplexen Objekts von seiner Darstellung, sodass mit demselben Konstruktionsprozess unterschiedliche Darstellungen erstellt werden können
Ein Builder ähnelt konzeptionell einer abstrakten Fabrik. Der Unterschied besteht jedoch darin, dass der Generator die verschiedenen Komponenten einer einzelnen komplexen Klasse generiert, indem er auf verschiedene Konstruktoren verweist, während die abstrakte Fabrik es Ihnen ermöglicht, eine ganze konkrete Klasse zu erstellen. Beispiel: Ein Bauunternehmer kann Häuser, Villen und Büros bauen. Sie können verschiedene Bauunternehmer mit dem Bau von Backstein- und Holzhäusern beauftragen. Sie können jedoch die Form und Größe des Hauses festlegen. Und andere Rippen werden verwendet, um einen Teil des Hauses zu bauen, aber nicht alle. Bauen Sie beispielsweise Fenster, Türen und Parkplätze.
Das folgende Beispiel stellt zunächst eine abstrakte Klasse TabstractFormBuilder und ihre beiden konkreten Unterklassen TredFormBuilder und TblueFormBuilder vor. TabstractFormBuilder deklariert einige Klassenkonstruktoren
Typ
TAbstractFormBuilder = Klasse
Privat
FForm: TForm;
procedure BuilderFormClose(Sender: TObject; var Action: TCloseAction);
geschützt
Funktion GetForm: TForm; virtual;
öffentlich
procedure CreateForm(AOwner: TComponent);
procedure CreateSpeedButton; virtual;
Verfahren CreateEdit; virtuell;
Verfahren CreateLabel; virtuell;
Eigenschaft Form: TForm read GetForm;
Ende;
Typ
TRedFormBuilder = class(TAbstractFormBuilder)
Privat
FNextLeft, FNextTop: Integer;
öffentlich
procedure CreateForm(AOwner: TComponent);
procedure CreateSpeedButton;
Prozedur CreateEdit;
Prozedur CreateEdit;
Ende;
Typ
TBlueFormBuilder = class(TAbstractFormBuilder)
Privat
FNextLeft, FNextTop: Integer;
öffentlich
procedure CreateForm(AOwner: TComponent);
procedure CreateSpeedButton;
Prozedur CreateEdit;
Prozedur CreateLabel;
Ende;
Unter den oben genannten Schnittstellen:
? Deklarieren Sie eine Schnittstelle zum Erstellen abstrakter Produktobjekte: TAbstractFormBuilder
¨ Die Klasse TAbstractFormBuilder verfügt über drei abstrakte Factory-Methoden: CreateForm, CreateSpeedButton, CreateEdit, CreateEdit
? TBlueFormBuilder und TRedFormBuilder werden verwendet, um Methoden zum Erstellen spezifischer Produktobjekte zu implementieren
Beim Ausführen ruft das Clientprogramm einen öffentlichen Konstruktor einer bestimmten Klasse auf, um einige Teile davon zu erstellen. Die Aufrufmethode einer bestimmten Konstruktorinstanz lautet wie folgt:
procedure TForm1.Create3ComponentFormUsingBuilder(ABuilder: TAbstractFormBuilder);
var
NeueForm: TForm;
beginnen
mit ABuilder beginnen
CreateForm(application);
ErstellenBearbeiten;
CreateSpeedButton;
CreateLabel;
NeueForm := Form;
if NewForm <> nil then NewForm.Show;
Ende;
Ende;