El modo Constructor en Delphi amplía el modo Constructor básico. Para obtener más información sobre el modo Constructor, consulte [Gam+]
Separar la construcción de un objeto complejo de su representación para que un mismo proceso de construcción pueda crear diferentes representaciones
Un constructor es conceptualmente similar a una fábrica abstracta. Pero la diferencia es que el generador genera los diversos componentes de una única clase compleja haciendo referencia a diferentes constructores, mientras que la fábrica abstracta le permite crear una clase concreta completa. Por ejemplo: un constructor puede construir casas, villas y oficinas. Puedes contratar diferentes constructores para construir casas de ladrillo y casas de madera. Aunque puedes especificar la forma y el tamaño de la casa. Y otras nervaduras se utilizan para construir parte de la casa, pero no toda. Por ejemplo, construya ventanas, puertas y estacionamientos.
El siguiente ejemplo presenta primero una clase abstracta TabstractFormBuilder y sus dos subclases concretas TredFormBuilder y TblueFormBuilder. TabstractFormBuilder declara algunos constructores de clases
tipo
TAbstractFormBuilder = clase
Privado
Formulario F: Formulario T;
procedimiento BuilderFormClose(Remitente: TObject; var Acción: TCloseAction);
protegido
función ObtenerForm: TForm virtual;
público
procedimiento CreateForm(AOwner: TComponent);
procedimiento CreateSpeedButton;
procedimiento CrearEditar; virtual;
procedimiento CreateLabel; virtual;
formulario de propiedad: TForm leído GetForm;
fin;
tipo
TRedFormBuilder = clase(TAbstractFormBuilder)
privado
FNextLeft, FNextTop: Entero;
público
procedimiento CreateForm(AOwner: TComponent);
procedimiento CreateSpeedButton;
procedimiento CrearEditar;
procedimiento CrearEditar;
fin;
tipo
TBlueFormBuilder = clase(TAbstractFormBuilder)
privado
FNextLeft, FNextTop: Entero;
público
procedimiento CreateForm(AOwner: TComponent);
procedimiento CreateSpeedButton;
procedimiento CrearEditar;
procedimiento CreateLabel;
fin;
Entre las interfaces anteriores:
? Declarar una interfaz para crear objetos de producto abstractos: TAbstractFormBuilder
¨ La clase TAbstractFormBuilder tiene tres métodos abstractos de fábrica CreateForm, CreateSpeedButton, CreateEdit, CreateEdit
¿TBlueFormBuilder y TRedFormBuilder se utilizan para implementar métodos para crear objetos de productos específicos?
Cuando se ejecuta, el programa cliente llama a un constructor público de una clase específica para crear algunas partes de ella. El método de llamada de una instancia de constructor específica es el siguiente:
procedimiento TForm1.Create3ComponentFormUsingBuilder(ABuilder: TAbstractFormBuilder);
var
Nuevo formulario: TForm;
comenzar
con ABuilder comienza
CrearForm(aplicación);
CrearEditar;
Crear botón de velocidad;
CrearEtiqueta;
Nuevo formulario := Formulario;
si NewForm <> nil entonces NewForm.Show;
fin;
fin;