يعمل وضع Builder في دلفي على توسيع وضع Builder الأساسي. لمزيد من المعلومات حول وضع Builder، يرجى الرجوع إلى [Gam+]
افصل بناء كائن معقد عن تمثيله بحيث يمكن لعملية البناء نفسها إنشاء تمثيلات مختلفة
يشبه البناء من الناحية النظرية المصنع المجرد. لكن الفرق هو أن المولد يولد المكونات المختلفة لفئة معقدة واحدة من خلال الرجوع إلى مُنشئات مختلفة، بينما يسمح لك المصنع المجرد بإنشاء فئة خرسانية كاملة. على سبيل المثال: يمكن للبناء بناء المنازل والفيلات والمكاتب. يمكنك استئجار بناة مختلفين لبناء منازل من الطوب ومنازل خشبية. على الرغم من أنه يمكنك تحديد شكل وحجم المنزل. وأضلاع أخرى تستخدم في بناء جزء من المنزل وليس كله. على سبيل المثال، بناء النوافذ والأبواب ومواقف السيارات.
يقدم المثال التالي أولاً فئة مجردة TabstractFormBuilder وفئتيها الفرعيتين الملموستين TredFormBuilder وTblueFormBuilder. يعلن TabstractFormBuilder عن بعض منشئي الفئة
يكتب
TAbstractFormBuilder = class
خاص
النموذج: النموذج؛
الإجراء BuilderFormClose(Sender: TObject; var Action: TCloseAction);
محمي
وظيفة GetForm: TForm افتراضية؛
عام
الإجراء CreateForm(AOwner: TComponent);
الإجراء CreateSpeedButton الظاهري؛
الإجراء CreateEdit الظاهري؛
الإجراء CreateLabel الظاهري؛
نموذج الخاصية: قراءة TForm لـ GetForm؛
نهاية؛
يكتب
TRedFormBuilder = فئة (TAbstractFormBuilder)
خاص
FNextLeft، FNextTop: عدد صحيح؛
عام
الإجراء CreateForm(AOwner: TComponent);
تجاوز الإجراء CreateSpeedButton؛
تجاوز الإجراء ؛
تجاوز الإجراء ؛
نهاية؛
يكتب
TBlueFormBuilder = فئة (TAbstractFormBuilder)
خاص
FNextLeft، FNextTop: عدد صحيح؛
عام
الإجراء CreateForm(AOwner: TComponent);
تجاوز الإجراء CreateSpeedButton؛
تجاوز الإجراء ؛
تجاوز الإجراء CreateLabel؛
نهاية؛
من بين الواجهات المذكورة أعلاه:
قم بتعريف واجهة لإنشاء كائنات منتج مجردة: TAbstractFormBuilder
¨ تحتوي الفئة TAbstractFormBuilder على ثلاث طرق مصنعية مجردة CreateForm وCreateSpeedButton وCreateEdit وCreateEdit
يتم استخدام TBlueFormBuilder وTRedFormBuilder لتنفيذ أساليب إنشاء كائنات منتج محددة
عند التشغيل، يستدعي برنامج العميل مُنشئًا عامًا لفئة معينة لإنشاء بعض أجزاء منه، وتكون طريقة الاتصال لمثيل مُنشئ محدد كما يلي:
الإجراء TForm1.Create3ComponentFormUsingBuilder(ABuilder: TAbstractFormBuilder);
فار
نموذج جديد: TForm؛
يبدأ
مع ABuilder تبدأ
CreateForm(application);
CreateEdit;
this.CreateSpeedButton;
this.CreatLabel;
NewForm := Form;
إذا كان NewForm <> nil ثم NewForm.Show؛
نهاية؛
نهاية؛