1. คำอธิบายฉาก
รูปแบบตัวสร้างนั้นเหมือนกับรูปแบบโรงงานและรูปแบบโรงงานนามธรรมและใช้เพื่อสร้างวัตถุคลาสที่สืบทอดมา
โหมดโรงงาน: โหมดการออกแบบจาวาโหมดโรงงาน
รูปแบบของโรงงานนามธรรม: รูปแบบการออกแบบ Java รูปแบบโรงงานนามธรรม
ความแตกต่างคือในโหมดโรงงานแต่ละ subclass ใช้อินเทอร์เฟซและสร้างวัตถุคลาสย่อยผ่านคลาสโรงงาน ในขณะที่อยู่ในโหมด Builder แต่ละคลาสย่อยมีคลาสตัวสร้างและสร้างวัตถุคลาสแม่ที่แตกต่างกันผ่านมันและในที่สุดก็ใช้ polymorphism ในความเป็นจริงคลาสย่อยและคลาสแม่ไม่มีอยู่ในรหัส
การใช้เครื่องมือเก็บข้อมูลเครื่องมือเป็นตัวอย่างในโหมดโรงงานกำหนดอินเทอร์เฟซ "เครื่องมือการเก็บข้อมูลข้อมูลเครื่องมือ" กำหนดคลาสย่อย "เครื่องมือรับข้อมูลไฟล์ PDF" และ "เครื่องมือเก็บข้อมูลไฟล์ Excel" และใช้อินเทอร์เฟซในคลาสย่อย วัตถุย่อยถูกสร้างขึ้นผ่านคลาสโรงงาน (ไม่ว่าจะเป็นคลาสโรงงานคงที่หรือคลาสโรงงานนามธรรม) และวัตถุเหล่านี้มีการแสดงออกที่แตกต่างกันนั่นคือ polymorphism
ในโหมด Builder ให้กำหนดคลาสพาเรนต์ "เครื่องมือการเก็บข้อมูลเครื่องมือ" จากนั้นใช้ "คลาส Builder คลาสของเครื่องมือเก็บข้อมูลไฟล์ PDF" และ "คลาส Builder คลาสของเครื่องมือเก็บข้อมูลไฟล์ excel" เพื่อกำหนดวิธีการแสดงออกที่แตกต่างกัน (กำหนดค่าที่แตกต่างกันให้กับฟิลด์ ฯลฯ )
ในโหมดผู้สร้างผู้กำกับเป็นเหมือนผู้กำกับ มันเรียกผู้สร้างตัวสร้างเพื่อสร้างวัตถุคลาสให้เสร็จสมบูรณ์ ผู้โทรสามารถโทรหาผู้กำกับดังที่แสดงในรูปด้านล่าง:
แน่นอนว่าแบบจำลองโรงงานถูกใช้อย่างแท้จริงเพื่อสร้างวัตถุในขณะที่โมเดลผู้สร้างถูกใช้อย่างแท้จริงเพื่อสร้างวัตถุที่แตกต่างกัน ทั้งสองสามารถบรรลุฟังก์ชั่นที่คล้ายกัน แต่สถานการณ์แอปพลิเคชันของทั้งสองอาจแตกต่างกันมาก
แบบจำลองโรงงานใช้เพื่อสร้างวัตถุคลาสง่าย ๆ ในขณะที่โมเดลตัวสร้างใช้เพื่อสร้างวัตถุคลาสที่ซับซ้อน ข้อมูลเฉพาะสามารถเรียนรู้ได้จาก Baidu
เมื่อขยายตัวอย่างเช่นเพิ่มการรวบรวมข้อมูลไฟล์ Word และสร้างคลาส Builder ซึ่งใช้การสร้างโปรแกรมการรวบรวมข้อมูลไฟล์ Word เมื่อโทรคุณสามารถเรียกได้ว่าโดยใช้คลาส WordBuilder
2. รหัสตัวอย่าง
(ผู้ปกครอง) คลาส:
แพ็คเกจ Lims.designpatterndemo.builderdemo; อุปกรณ์ระดับสาธารณะ DataCapture {สตริงส่วนตัว Filepath; อุปกรณ์สตริงส่วนตัว datata; // สตริงสาธารณะ getFilePath () {return this.filepath; } โมฆะสาธารณะ setFilePath (String filePath) {this.filePath = filePath; } สตริงสาธารณะ getEquipmentData () {return this.equipmentData; } โมฆะสาธารณะ setEquipmentData (String EquipmentData) {this.equipmentData = EquipmentData; -อินเทอร์เฟซ Builder:
Package Lims.designpatterndemo.builderdemo; อุปกรณ์สาธารณะส่วนต่อประสานอุปกรณ์ DatacaptureBuilder {// ส่วนประกอบโมฆะ buildFilePath (); เป็นโมฆะ buildequipmentdata (); // ประกอบอุปกรณ์ datacapture buildequipmentDatacapture ();}หมวดหมู่ตัวสร้างการรวบรวมข้อมูล PDF:
Package Lims.designpatterndemo.builderdemo; PdffileCaptureBuilder Public Class PdffileCapturebuilder ใช้อุปกรณ์ DatacaptureBuilder {// EquipmentDatacapture; // สร้าง pdffilecapturebuilder () {capture = equipmentDatacapture () ใหม่ (); } // @Override โมฆะสาธารณะ BuildFilePath () {Capture.setFilePath (". PDF"); } @Override โมฆะสาธารณะ BuildEquipmentData () {Capture.SetequipmentData ("เนื้อหาไฟล์ PDF"); } @Override Public EquipmentDatacapture BuildEquipmentDataCapture () {การจับคืน; -ผู้สร้างการเก็บข้อมูล Excel:
Package Lims.designpatterndemo.builderdemo; ระดับสาธารณะ excelfilecapturebuilder ใช้อุปกรณ์ datacapturebuilder {// equipmentDatacapture การจับภาพ; // สร้าง public excelfilecapturebuilder () {capture = mequipmentDatacapture () ใหม่ (); } @Override โมฆะสาธารณะ BuildFilePath () {Capture.SetFilePath (". XLSX"); } @Override โมฆะสาธารณะ BuildEquipmentData () {Capture.SetequipmentData ("เนื้อหาไฟล์ excel"); } @Override Public EquipmentDatacapture BuildEquipmentDataCapture () {การจับคืน; -ผู้อำนวยการชั้นเรียนสามารถเข้าใจได้ง่ายในฐานะผู้กำกับชั้น:
Package Lims.designpatterndemo.builderdemo; อุปกรณ์ระดับสาธารณะ Datacapturedirector {อุปกรณ์สาธารณะ Datacapture ConstructeqiupiPmentDatacapture (EquipmentDatacaptureBuilder Builder) {builder.buildFilePath (); builder.buildequipmentData (); EquipmentDatacapture Capture = builder.buildequipmentDatacapture (); การจับกลับมา; -ตัวอย่างการโทร:
แพ็คเกจ Lims.designpatterndemo.builderdemo; Builderdemo ชั้นเรียนสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {EquipmentDatacapturetirectirector Direcotr = equipmentDatacapturedirector (); EquipmentDatacaptureBuilder Builder = ใหม่ pdffileCaptureBuilder (); builder = ใหม่ excelfileCaptureBuilder (); EquipmentDatacapture Capture = direcotr.constructeqiupmentDatacapture (Builder); System.out.println (capture.getequipmentdata ()); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น