Режим Builder в Delphi расширяет базовый режим Builder. Дополнительную информацию о режиме «Строитель» можно найти в [Gam+].
Отделите построение сложного объекта от его представления, чтобы один и тот же процесс построения мог создавать разные представления.
Конструктор концептуально похож на абстрактную фабрику. Но разница в том, что генератор генерирует различные компоненты одного сложного класса, обращаясь к разным конструкторам, а абстрактная фабрика позволяет создать целый конкретный класс. Например: строитель может строить дома, виллы и офисы. Вы можете нанять разных строителей для строительства кирпичных и деревянных домов. Хотя вы можете указать форму и размер дома. А другие ребра используются для строительства части дома, но не всего. Например, постройте окна, двери и парковки.
В следующем примере сначала представлен абстрактный класс TabstractFormBuilder и два его конкретных подкласса TredFormBuilder и TblueFormBuilder. TabstractFormBuilder объявляет некоторые конструкторы классов.
тип
TAbstractFormBuilder = класс
Частный
ФФорм: ТФорм;
процедура BuilderFormClose (Отправитель: TObject; вар Действие: TCloseAction);
защищенный
функция GetForm: TForm виртуальная;
общественный
процедура CreateForm (AOwner: TComponent virtual);
процедура CreateSpeedButton виртуальная;
процедура CreateEdit виртуальная;
процедура CreateLabel виртуальная;
Форма свойства: TForm читает GetForm;
конец;
тип
TRedFormBuilder = класс (TAbstractFormBuilder)
частный
FNextLeft, FNextTop: целое число;
общественный
процедура CreateForm (AOwner: TComponent override);
переопределение процедуры CreateSpeedButton;
переопределение процедуры CreateEdit;
переопределение процедуры CreateEdit;
конец;
тип
TBlueFormBuilder = класс (TAbstractFormBuilder)
частный
FNextLeft, FNextTop: целое число;
общественный
процедура CreateForm (AOwner: TComponent override);
переопределение процедуры CreateSpeedButton;
переопределение процедуры CreateEdit;
переопределение процедуры CreateLabel;
конец;
Среди вышеперечисленных интерфейсов:
? Объявить интерфейс для создания абстрактных объектов продукта: TAbstractFormBuilder?
¨ Класс TAbstractFormBuilder имеет три абстрактных фабричных метода CreateForm, CreateSpeedButton, CreateEdit, CreateEdit.
? TBlueFormBuilder и TRedFormBuilder используются для реализации методов создания конкретных объектов продукта.
При запуске клиентская программа вызывает открытый конструктор определенного класса для создания некоторых его частей. Метод вызова конкретного экземпляра конструктора выглядит следующим образом:
процедура TForm1.Create3ComponentFormUsingBuilder(ABuilder: TAbstractFormBuilder);
вар
Новая форма: TForm;
начинать
с ABuilder начнем
СоздатьФорму (приложение);
СоздатьРедактировать;
СоздатьСпидКнопку;
Создать метку;
НоваяФорма := Форма;
если NewForm <> nil, то NewForm.Show;
конец;
конец;