การส่งมอบระหว่างอินเทอร์เฟซและตรรกะทางธุรกิจใน Delphi
j xue (zhuam) [email protected]
ก่อนที่ฉันจะเริ่มต้นการพัฒนาซอฟต์แวร์ Delphi ฉันมีส่วนร่วมในการพัฒนาซอฟต์แวร์ Java
โครงการล่าสุดได้รับการพัฒนาด้วย Delphi ดังนั้นฉันจึงดู Delphi อีกครั้งในหนึ่งเดือนฉันอ่านหนังสือ Delphi ประมาณ 4 เล่ม เมื่อฉันพัฒนาและออกแบบซอฟต์แวร์! อ่ามาคุยกันน้อยลงมาถึงจุด!
Delphi เป็น IDE สำหรับการพัฒนาซอฟต์แวร์อย่างรวดเร็ว
1. ตัวอย่างเช่นถ้าฉันต้องการแทรกบันทึกลงในฐานข้อมูลนี่เป็นวิธีปกติ!
SQL ตัวอย่าง: แทรกลงใน ExampleTable1 (Field1, Field2, Field3) ค่า (ค่า 1, values2, values3)
ตอนนี้สมมติว่ามีตัวควบคุมข้อความสามแบบในรูปแบบ Delphi นี้ชื่อคือ Frist, Second และสามตามลำดับ
ที่นี่ฉันใช้สามวิธีที่แตกต่างกันเพื่อแทรกข้อมูลลงในฐานข้อมูล:
1. แทรกโดยตรง
ไคลเอนต์ ------------> ฐานข้อมูล
แทรกลงใน ExampleTable1 (field1, field2, field3) ค่า (frist.text, second.text, three.text)
2. การแทรกทางอ้อม
ไคลเอนต์ --- (ส่งข้อความ) ---> dataclass -------> ฐานข้อมูล
หมายความว่าข้อมูลฟอร์มจะถูกบันทึกไว้เป็นอันดับแรกในคลาสข้อมูลจากนั้นผู้ใช้จะนำข้อมูลจากคลาสข้อมูลนี้และถ่ายโอนข้อมูล
ส่งผ่านไปยังฐานข้อมูล
สังเกต:
การควบคุมแบบฟอร์มจะจัดเก็บข้อมูลลงในคลาสข้อมูล Dataclass โดยตรงผ่านข้อความ
ข้อมูลนี้ใช้เพื่อจัดเก็บสถานะข้อมูลเท่านั้นและเต็มไปด้วยคุณลักษณะและไม่มีการใช้ตรรกะทางธุรกิจ!
ดังนี้:
-
ผู้แต่ง: Zhuam
วันที่: 2004/09/04
ประเภท: คลาส
สถานที่ให้บริการ: ชุดข้อมูล AssociatorrunBean ทั้งหมด Mothed
คำอธิบาย: ใช้เพื่อบันทึกข้อมูลใบขับขี่ของสมาชิก
-
พิมพ์
tassociatorrunbean = คลาส (tobject)
ส่วนตัว
fkilometre: double;
fcarnumber: สตริง;
fnumber17: สตริง;
Fcarcolor: String;
fassociatorid: สตริง;
fcarcapacity: สตริง;
fframenumber: สตริง;
Fenginenumber: String;
FAVAILABILITYDATE: TDATE;
Fregisterdate: tdate;
fbackpicture: timage;
ffrontpicture: timage;
Fleftpicture: Timage;
FrightPicture: Timage;
ฟังก์ชั่น getBackPicture: timage;
ฟังก์ชั่น getFrontPicture: timage;
ฟังก์ชั่น getleftPicture: timage;
ฟังก์ชั่น getrightPicture: timage;
ขั้นตอน setassociatorid (ค่า const: สตริง);
ขั้นตอน setavailabilitydate (ค่า const: tdate);
ขั้นตอน setBackPicture (ค่า const: timage);
ขั้นตอน setCarcapacity (ค่า const: String);
ขั้นตอน setCarcolor (ค่า const: สตริง);
ขั้นตอน setCarnumber (ค่า const: สตริง);
ขั้นตอน setEnginEnumber (ค่า const: สตริง);
ขั้นตอน setFramenumber (ค่า const: สตริง);
ขั้นตอน setFrontPicture (ค่า const: timage);
ขั้นตอน setKilometre (ค่า const: สองเท่า);
ขั้นตอนการ setleftPicture (ค่า const: timage);
ขั้นตอน setNumber17 (ค่า const: สตริง);
ขั้นตอน setregisterdate (ค่า const: tdate);
ขั้นตอน setrightPicture (ค่า const: timage);
สาธารณะ
ตัวสร้างสร้าง;
Destructor ทำลาย; แทนที่;
Property Associatorid: String read fassociatorid เขียน setassociatorid;
Property Carnumber: String read fcarnumber เขียน setcarnumber;
Property Carcolor: String read fcarcolor เขียน setcarcolor;
Carmode Property: String read fcarcolor เขียน setcarcolor;
Property Enginenumber: String read fenginenumber เขียน setenginenumber;
Framenumber คุณสมบัติ: สตริงอ่าน fframenumber เขียน setFramenumber;
Property Carcapacity: String read fcarcapacity เขียน setCarcapacity;
หมายเลขคุณสมบัติ 17: สตริงอ่าน fnumber17 เขียน setNumber17;
คุณสมบัติกิโลเมตร: อ่านสองครั้ง fkilometre เขียน setkilometre;
Property registerDate: tdate อ่าน fregisterdate เขียน setregisterdate;
Property AvailabilityDate: tdate อ่าน failabilitydate เขียน setavailabilitydate;
Property FrontPicture: Timage อ่าน getFrontPicture เขียน setFrontPicture;
Property Backpicture: timage อ่าน getbackpicture เขียน setBackPicture;
Property LeftPicture: timage อ่าน getleftpicture เขียน setleftpicture;
Property Rightpicture: Timage อ่าน getrightpicture เขียน setrightpicture;
จบ;
แทรกลงใน ExampleTable1 (Field1, Field2, Field3) ค่า (Associatorrunbean.frist, Associatorrunbean.second, Associatorrunbean.Text)
3. การแทรกทางอ้อม
ไคลเอนต์ --- (การจัดส่งคุณสมบัติที่กำหนดเอง) ---> Dataclass -------> ฐานข้อมูล
หมายความว่าข้อมูลฟอร์มจะถูกบันทึกไว้เป็นอันดับแรกในคลาสข้อมูลจากนั้นผู้ใช้จะนำข้อมูลจากคลาสข้อมูลนี้และถ่ายโอนข้อมูล
ส่งผ่านไปยังฐานข้อมูล
สังเกต:
การควบคุมแบบฟอร์มจะจัดเก็บข้อมูลลงในคลาสข้อมูล (Dataclass) ผ่านคุณสมบัติที่กำหนดเอง
ข้อมูลนี้ใช้เพื่อจัดเก็บสถานะข้อมูลเท่านั้นและเต็มไปด้วยคุณลักษณะและไม่มีการใช้ตรรกะทางธุรกิจ!
แทรกลงใน ExampleTable1 (Field1, Field2, Field3) ค่า (Associatorrunbean.frist, Associatorrunbean.second, Associatorrunbean.Text)
เมื่อพูดถึงเรื่องนี้ใครบางคนจะถามฉันว่าอะไรคือความสำคัญของการตระหนักถึงวิธีนี้! สหายที่ระมัดระวังอาจสังเกตเห็นได้!
นี่เป็นวิธีที่จะแยกอินเทอร์เฟซ Delphi ออกจากตรรกะทางธุรกิจ