O modo Builder no Delphi estende o modo Builder básico. Para obter mais informações sobre o modo Builder, consulte [Gam+]
Separar a construção de um objeto complexo da sua representação para que o mesmo processo de construção possa criar representações diferentes
Um construtor é conceitualmente semelhante a uma fábrica abstrata. Mas a diferença é que o gerador gera os vários componentes de uma única classe complexa referenciando diferentes construtores, enquanto a fábrica abstrata permite criar uma classe concreta inteira. Por exemplo: um construtor pode construir casas, vilas e escritórios. Você pode contratar diferentes construtores para construir casas de tijolos e casas de madeira. Embora você possa especificar a forma e o tamanho da casa. E outras costelas servem para construir parte da casa, mas não todas. Por exemplo, construa janelas, portas e estacionamentos.
O exemplo a seguir apresenta primeiro uma classe abstrata TabstractFormBuilder e suas duas subclasses concretas TredFormBuilder e TblueFormBuilder. TabstractFormBuilder declara alguns construtores de classe
tipo
TAbstractFormBuilder = classe
Privado
FForm: TForm;
procedimento BuilderFormClose(Sender: TObject; var Action: TCloseAction);
protegido
função GetForm: TForm virtual;
público
procedimento CreateForm(AOwner: TComponent);
procedimento CreateSpeedButton virtual;
procedimento CreateEdit virtual;
procedimento CreateLabel virtual;
propriedade Formulário: TForm leia GetForm;
fim;
tipo
TRedFormBuilder = classe(TAbstractFormBuilder)
privado
FNextLeft, FNextTop: inteiro;
público
procedimento CreateForm(AOwner: substituição de TComponent);
substituição de procedimento CreateSpeedButton;
substituição de procedimento CreateEdit;
substituição de procedimento CreateEdit;
fim;
tipo
TBlueFormBuilder = classe(TAbstractFormBuilder)
privado
FNextLeft, FNextTop: inteiro;
público
procedimento CreateForm(AOwner: substituição de TComponent);
substituição de procedimento CreateSpeedButton;
substituição de procedimento CreateEdit;
substituição de procedimento CreateLabel;
fim;
Entre as interfaces acima:
? Declare uma interface para criar objetos de produto abstratos: TAbstractFormBuilder
¨ A classe TAbstractFormBuilder possui três métodos abstratos de fábrica CreateForm, CreateSpeedButton, CreateEdit, CreateEdit
?TBlueFormBuilder e TRedFormBuilder são usados para implementar métodos para criar objetos de produto específicos
Durante a execução, o programa cliente chama um construtor público de uma classe específica para criar algumas partes dela. O método de chamada de uma instância específica do construtor é o seguinte:
procedimento TForm1.Create3ComponentFormUsingBuilder(ABuilder: TAbstractFormBuilder);
var
NovoFormulário: TForm;
começar
com ABuilder comece
CriarForm(aplicativo);
CriarEditar;
CriarSpeedButton;
CriarLabel;
NovoFormulário := Formulário;
se NewForm <> nulo então NewForm.Show;
fim;
fim;