คำจำกัดความรูปแบบของตัวสร้าง: แยกการสร้างวัตถุที่ซับซ้อนออกจากการเป็นตัวแทนเพื่อให้กระบวนการก่อสร้างเดียวกันสามารถสร้างการเป็นตัวแทนที่แตกต่างกัน
รูปแบบตัวสร้างคือการสร้างวัตถุที่ซับซ้อนทีละขั้นตอนซึ่งช่วยให้ผู้ใช้สามารถสร้างได้เพียงแค่ระบุประเภทและเนื้อหาของวัตถุที่ซับซ้อน ผู้ใช้ไม่ทราบรายละเอียดการก่อสร้างภายในที่เฉพาะเจาะจง โหมด Builder นั้นคล้ายคลึงกับโหมดโรงงานนามธรรมมาก
ทำไมต้องใช้โหมด Builder
มันคือการแยกกระบวนการสร้างวัตถุที่ซับซ้อนจากส่วนประกอบ หมายเหตุ: มันเป็นกระบวนการ decoupling และส่วนประกอบ
เนื่องจากวัตถุที่ซับซ้อนไม่เพียง แต่มีส่วนประกอบจำนวนมากเช่นรถยนต์มีหลายส่วน: ล้อพวงมาลัยเครื่องยนต์และชิ้นส่วนขนาดเล็กต่าง ๆ ฯลฯ มีหลายส่วน แต่มันเป็นมากกว่าสิ่งเหล่านี้ ในการรวบรวมชิ้นส่วนเหล่านี้ไว้ในรถยนต์สำหรับรถยนต์กระบวนการประกอบนี้ยังซับซ้อนมาก (ต้องใช้เทคโนโลยีการประกอบที่ดี) และโมเดลผู้สร้างคือการแยกส่วนประกอบและกระบวนการประกอบ
วิธีใช้โหมด Builder
ก่อนอื่นสมมติว่าวัตถุที่ซับซ้อนประกอบด้วยส่วนประกอบหลายอย่าง
ขั้นแรกจำเป็นต้องมีอินเทอร์เฟซที่กำหนดวิธีการสร้างส่วนประกอบต่าง ๆ ของวัตถุที่ซับซ้อน:
การคัดลอกรหัสมีดังนี้:
ตัวสร้างอินเตอร์เฟสสาธารณะ {
// สร้างส่วนประกอบ A ตัวอย่างเช่นสร้างล้อรถยนต์
เป็นโมฆะ buildparta ();
// สร้างส่วนประกอบ B เช่นการสร้างพวงมาลัยรถยนต์
เป็นโมฆะ buildpartb ();
// สร้างส่วนประกอบ C เช่นการสร้างเครื่องยนต์รถยนต์
เป็นโมฆะ buildpartc ();
// ส่งคืนผลการประกอบสุดท้าย (กลับไปที่รถประกอบล่าสุด)
// กระบวนการประกอบของผลิตภัณฑ์สำเร็จรูปไม่ได้ดำเนินการที่นี่ แต่จะถูกโอนไปยังคลาสผู้อำนวยการด้านล่าง
// สิ่งนี้จะตระหนักถึงกระบวนการ decoupling และส่วนประกอบ
ผลิตภัณฑ์ getResult ();
-
ใช้ผู้กำกับเพื่อสร้างวัตถุที่ซับซ้อนสุดท้ายและอินเทอร์เฟซตัวสร้างด้านบนห่อหุ้มวิธีการสร้างส่วนประกอบ (วัตถุที่ซับซ้อนประกอบด้วยส่วนประกอบเหล่านี้) นั่นคือเนื้อหาของผู้กำกับคือวิธีการรวบรวมส่วนประกอบในผลิตภัณฑ์สำเร็จรูปในที่สุด: ในที่สุด
การคัดลอกรหัสมีดังนี้:
ผู้อำนวยการชั้นเรียนสาธารณะ {
Builder Builder ส่วนตัว;
ผู้อำนวยการสาธารณะ (Builder Builder) {
this.builder = builder;
-
// ในที่สุด Parta PartB Partc ใช้เพื่อสร้างวัตถุที่ซับซ้อน
// นี่เป็นกระบวนการประกอบพวงมาลัยล้อและเครื่องยนต์เข้ากับรถ
โมฆะสาธารณะสร้าง () {
builder.buildparta ();
builder.buildpartb ();
builder.buildpartc ();
-
-
การใช้งานเฉพาะของ Builder ConcreteBuilder:
1. การสร้างหรือประกอบส่วนประกอบผลิตภัณฑ์โดยการสร้างตัวสร้างอินเตอร์เฟสให้เสร็จ
2. กำหนดและชี้แจงสิ่งที่ต้องการในการสร้าง
3. จัดเตรียมอินเทอร์เฟซที่สามารถตอบสนองผลิตภัณฑ์ได้อีกครั้ง
การคัดลอกรหัสมีดังนี้:
คลาสสาธารณะ ConcreteBuilder ใช้ Builder {
ส่วนหนึ่งส่วน, partb, partc;
โมฆะสาธารณะ buildparta () {
// นี่คือรหัสเฉพาะของวิธีการสร้าง parta
-
โมฆะสาธารณะ buildpartb () {
// นี่คือรหัสเฉพาะของวิธีการสร้าง PartB
-
โมฆะสาธารณะ buildpartc () {
// นี่คือรหัสเฉพาะของวิธีการสร้าง PartB
-
ผลิตภัณฑ์สาธารณะ getResult () {
// กลับไปที่ผลการชุมนุมขั้นสุดท้าย
-
-
วัตถุที่ซับซ้อน: ผลิตภัณฑ์:
การคัดลอกรหัสมีดังนี้:
ผลิตภัณฑ์อินเทอร์เฟซสาธารณะ {}
ส่วนประกอบของวัตถุที่ซับซ้อน:
การคัดลอกรหัสมีดังนี้:
ส่วนอินเทอร์เฟซสาธารณะ {}
มาดูวิธีเรียกโหมดผู้สร้าง:
การคัดลอกรหัสมีดังนี้:
ConcreteBuilder Builder = New ConcreteBuilder ();
ผู้อำนวยการ = ผู้อำนวยการคนใหม่ (ผู้สร้าง);
ผู้อำนวยการ. construct ();
ผลิตภัณฑ์ผลิตภัณฑ์ = builder.getResult ();
แอปพลิเคชันโหมดผู้สร้าง
ในการใช้ Java จริงเรามักจะใช้แนวคิดของ "พูล"
"Pool" เป็นหน่วยความจำจริง ๆ การใช้หน่วยความจำจะได้รับการปรับปรุงให้ดีขึ้น ปรับเปลี่ยนคลาสผู้อำนวยการในโหมด Builder เพื่อวินิจฉัยว่าองค์ประกอบใด "breaking limb" ถูกทำลายแล้วซ่อมส่วนประกอบนี้