التسليم بين الواجهة ومنطق الأعمال في دلفي
J Xue (zhuam)[email protected]
قبل أن أبدأ تطوير البرمجيات ، لقد تعلمت مُثُل تصميم البرمجيات من مجتمع Java المصدر.
تم تطوير المشروع الأخير مع Delphi ، لذلك نظرت إلى Delphi مرة أخرى. عندما أقوم بتطوير وتصميم البرنامج! آه ، دعنا نتحدث أقل ، دعنا نصل إلى هذه النقطة!
Delphi هي IDE لتطوير البرمجيات السريعة.
1. على سبيل المثال ، إذا أردت إدراج سجل في قاعدة البيانات ، فهذه هي الطريقة المعتادة!
مثال SQL: إدراج في exampleTable1 (Field1 ، Field2 ، Field3) القيم (القيم 1 ، القيم 2 ، القيم 3)
لنفترض الآن أن هناك ثلاثة عناصر تحكم نصية في نموذج دلفي هذا ، والاسم فريست ، والثاني ، وثلاثة على التوالي
أستخدم هنا ثلاث طرق مختلفة لإدراج البيانات في قاعدة البيانات:
1. أدخل مباشرة
العميل ------------> قاعدة البيانات
إدراج في exampletable1 (field1 ، field2 ، field3) قيم (frist.text ، second.text ، three.text)
2. الإدراج غير المباشر
العميل --- (تمرير النص) ---> DataClass -------> قاعدة بيانات
وهذا يعني أنه يتم حفظ بيانات النموذج أولاً في فئة بيانات ، ثم يأخذ المستخدم البيانات من فئة البيانات هذه ونقل البيانات.
مرر إلى قاعدة البيانات
يلاحظ:
يقوم التحكم في النموذج بتخزين البيانات مباشرة في فئة بيانات DataClass من خلال النص.
يتم استخدام هذه البيانات DataClass فقط لتخزين حالة البيانات ، وهي مليئة بالسمات وليس لها تنفيذ منطق الأعمال!
على النحو التالي:
{------------------------------------------- ------------------------------------------------- --------------------------
المؤلف: تشام
التاريخ: 2004/09/04
النوع: الفصل
الممتلكات: جميع المعلومات المساعدة
الوصف: يستخدم لحفظ معلومات رخصة قيادة العضو ،
------------------------------------------------- ------------------------------------------------- -----------------------------
يكتب
tassociatorrunbean = فئة (tooject)
خاص
fkilometre: مزدوج ؛
fcarnumber: سلسلة.
fnumber17: سلسلة ؛
fcarcolor: سلسلة ؛
fassociatorid: سلسلة.
fcarcapacity: سلسلة.
fframenumber: سلسلة ؛
Fenginenumber: سلسلة ؛
FavailivationDate: tdate ؛
FregisterDate: tdate ؛
fbackpicture: timage ؛
ffrontpicture: timage ؛
fleftpicture: timage ؛
الخوف: توقيت ؛
وظيفة getBackpicture: timage ؛
وظيفة getFrontpicture: timage ؛
وظيفة getleftpicture: timage ؛
وظيفة getRightpicture: timage ؛
الإجراء setAssOciatorId (قيمة const: سلسلة) ؛
الإجراء setAvailabilityDate (قيمة const: tdate) ؛
الإجراء setbackpicture (قيمة const: timage) ؛
الإجراء setCArcAcapacity (قيمة const: سلسلة) ؛
الإجراء setCarcolor (قيمة const: سلسلة) ؛
الإجراء setCarnumber (قيمة const: سلسلة) ؛
الإجراء setEnginEnumber (قيمة const: سلسلة) ؛
الإجراء setframenber (قيمة const: سلسلة) ؛
الإجراء SetFrontpicture (قيمة const: توقيت) ؛
الإجراء setkilometre (قيمة const: مزدوجة) ؛
الإجراء setLeftPicture (قيمة const: توقيت) ؛
الإجراء setNumber17 (قيمة const: سلسلة) ؛
الإجراء setRegisterDate (قيمة const: tdate) ؛
الإجراء setRightpicture (قيمة const: timage) ؛
عام
إنشاء مُنشئ ؛
المدمر تدمير ؛ تجاوز ؛
Property AssociatorId: String Read FassociatorId SetAssociatorId ؛
Property Carnumber: String Read Fcarnumber اكتب SetCarnumber ؛
Property Carcolor: سلسلة قراءة fcarcolor اكتب setCarcolor ؛
Property Carmode: String Read Fcarcolor اكتب setCarcolor ؛
Property Enginenumber: String Read Fenginenumber اكتب setenginenber ؛
Property FrameNumber: سلسلة قراءة Fframenumber Setframenber ؛
Property Scarcapacity: سلسلة قراءة fcarcapacity اكتب setCarcapacity ؛
Property Number17: read fnumber17 اكتب setNumber17 ؛
Property Kilometer: Double Read Fkilometre اكتب setkilometre ؛
RegisterDate: TDATE قراءة FregisterDate اكتب setRegisterDate ؛
التوفر الخاصية: TDATE قراءة FAVAIVEDATE اكتب setAvailableDate ؛
Property Frontpicture: timage read getFrontpicture write setfrontpicture ؛
Property Backpicture: Timage Read GetBackpicture اكتب setbackpicture ؛
Property LeftPicture: Timage read getleftpicture اكتب setLeftPicture ؛
Property Rightpicture: Timage Read GetRightpicture write setRightpicture ؛
نهاية؛
إدراج في expletable1 (Field1 ، Field2 ، Field3) القيم (Associatorrunbean.frist ، Associatorrunbean.second ، Associatorrunbean.tex)
3. الإدراج غير المباشر
العميل --- (تسليم خاصية مخصصة) ---> DataClass -------> قاعدة بيانات
وهذا يعني أنه يتم حفظ بيانات النموذج أولاً في فئة بيانات ، ثم يأخذ المستخدم البيانات من فئة البيانات هذه ونقل البيانات.
مرر إلى قاعدة البيانات
يلاحظ:
يقوم التحكم في النموذج بتخزين البيانات مباشرة في فئة البيانات (DataClass) من خلال خاصية مخصصة.
يتم استخدام هذه البيانات DataClass فقط لتخزين حالة البيانات ، وهي مليئة بالسمات وليس لها تنفيذ منطق الأعمال!
إدراج في expletable1 (Field1 ، Field2 ، Field3) القيم (Associatorrunbean.frist ، Associatorrunbean.Second ، Associatorrunbean.tex)
الحديث عن هذا ، سوف يسألني أحدهم ، ما هي أهمية تحقيق بهذه الطريقة! ربما لاحظ الرفاق الدقيق ذلك!
هذه طريقة لفصل واجهة Delphi عن منطق العمل.