1. แนวคิดโมเดลผู้สร้าง
คำจำกัดความ: แยกการก่อสร้างวัตถุที่ซับซ้อนออกจากการเป็นตัวแทนเพื่อให้กระบวนการก่อสร้างเดียวกันสามารถสร้างการเป็นตัวแทนที่แตกต่างกัน;
หลัก: การก่อสร้างและการเป็นตัวแทนแยกต่างหากการเป็นตัวแทนที่แตกต่างกันนั้นแตกต่างจากแบบจำลองโรงงานนามธรรมเมื่อสร้าง:
(1) คล้ายกับรูปแบบโรงงานนามธรรมเพราะมันยังสามารถสร้างวัตถุที่ซับซ้อนได้ ความแตกต่างที่สำคัญคือโมเดลตัวสร้างมุ่งเน้นไปที่การสร้างวัตถุที่ซับซ้อนทีละขั้นตอนโดยมุ่งเน้นไปที่ลำดับของประเภทชิ้นส่วนและกระบวนการประกอบ แบบจำลองโรงงานนามธรรมมุ่งเน้นไปที่วัตถุหลายชุดของวัตถุผลิตภัณฑ์ (ง่ายหรือซับซ้อน) รูปแบบตัวสร้างส่งคืนผลิตภัณฑ์ในขั้นตอนสุดท้ายและสำหรับโรงงานนามธรรมผลิตภัณฑ์จะกลับมาทันที
(2) ในโหมดผู้สร้างมีหัวหน้างานที่จัดการผู้สร้าง ผู้ใช้ติดต่อหัวหน้างานและหัวหน้างานติดต่อผู้สร้างและในที่สุดก็ได้รับผลิตภัณฑ์ นั่นคือรูปแบบการก่อสร้างสามารถบังคับกระบวนการก่อสร้างทีละขั้นตอน
2. บทบาทของมัน
(1) บทบาทของตัวสร้างบทคัดย่อ: บทบาทนี้ใช้ในการควบคุมส่วนประกอบต่าง ๆ ของผลิตภัณฑ์และนามธรรมซึ่งโดยทั่วไปจะไม่ขึ้นอยู่กับตรรกะของแอปพลิเคชัน
(2) บทบาทผู้สร้างคอนกรีต:
บทบาทนี้ใช้วิธีการทั้งหมดที่กำหนดไว้ในตัวสร้างนามธรรมและส่งคืนอินสแตนซ์ผลิตภัณฑ์ในตัว
(3) บทบาทผลิตภัณฑ์ (ผลิตภัณฑ์):
บทบาทนี้เป็นวัตถุที่ซับซ้อนในการก่อสร้างและจะมีมากกว่าหนึ่งประเภทผลิตภัณฑ์ในระบบ ผลิตภัณฑ์เหล่านี้ไม่จำเป็นต้องมีส่วนต่อประสานสาธารณะและไม่เกี่ยวข้องอย่างสมบูรณ์
(4) บทบาทผู้กำกับ:
ตัวละครมีหน้าที่จัดเรียงลำดับของโมดูลที่มีอยู่แล้วบอกผู้สร้างผู้สร้างให้เริ่มสร้าง
3. ตัวอย่าง
ตัวสร้างส่วนต่อประสานสาธารณะ {โมฆะ buildparta (); เป็นโมฆะ buildpartb (); เป็นโมฆะ buildpartc (); - Public Class Builderimpl ใช้ Builder {@Override โมฆะสาธารณะ buildparta () {system.out.println ("สร้างส่วน A"); } @Override โมฆะสาธารณะ buildPartB () {system.out.println ("สร้างส่วน B"); } @Override โมฆะสาธารณะ buildpartc () {system.out.println ("build part c"); - คลาสสาธารณะ BuilderImpl2 ใช้ Builder {@Override โมฆะสาธารณะ buildparta () {system.out.println ("สร้างส่วน AA"); } @Override โมฆะสาธารณะ buildPartB () {system.out.println ("สร้างส่วน bb"); } @Override โมฆะสาธารณะ buildpartc () {system.out.println ("สร้างส่วน CC"); - / ** * ผู้บัญชาการ: คู่มือวิธีการสร้าง * ตัวสร้างการรวมกัน */ ผู้อำนวยการระดับสาธารณะ {ผู้สร้างผู้สร้างส่วนตัว; ผู้อำนวยการสาธารณะ (Builder Builder) {this.builder = Builder; } / *** วิธีการก่อสร้าง: กำหนดกระบวนการก่อสร้าง* หากจำเป็นต้องใช้กระบวนการอื่นคุณสามารถใหม่ผู้อำนวยการผู้บัญชาการคนใหม่* / โมฆะสาธารณะสร้าง () {System.out.println ("ผู้อำนวยการสร้างคำสั่งสำหรับการก่อสร้าง"); builder.buildparta (); builder.buildpartb (); builder.buildpartc (); - ผู้อำนวยการชั้นเรียนสาธารณะ 2 {ผู้สร้างผู้สร้างเอกชน; ผู้อำนวยการสาธารณะ 2 (Builder Builder) {this.builder = Builder; } / *** วิธีการก่อสร้าง: กำหนดกระบวนการก่อสร้าง* หากจำเป็นต้องใช้กระบวนการอื่นคุณสามารถใหม่ผู้อำนวยการผู้บัญชาการคนใหม่* / การสร้างโมฆะสาธารณะ () {System.out.println ("ผู้อำนวยการสร้างคำสั่งสำหรับการก่อสร้าง"); builder.buildpartb (); builder.buildpartc (); builder.buildparta (); - การทดสอบระดับสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {builder builder = new BuilderImpl (); ผู้อำนวยการ = ผู้อำนวยการคนใหม่ (ผู้สร้าง); / * * กระบวนการก่อสร้างเดียวกันโมดูลที่แตกต่างกัน (buildparta, buildpartb, buildpartc) การใช้งานใหม่การดำเนินการสร้างใหม่ * กระบวนการก่อสร้างที่แตกต่างกันผู้อำนวยการคนหนึ่ง * กระบวนการก่อสร้างที่แตกต่างกันการใช้งานโมดูลที่แตกต่างกันผู้อำนวยการใหม่ผู้สร้างใหม่ */ ผู้กำกับ System.out.println (""); Builder Builder2 = ใหม่ builderImpl2 (); ผู้อำนวยการ 2 = ผู้อำนวยการคนใหม่ (Builder2); ผู้อำนวยการ 2.construct (); System.out.println (""); builder build3 = ใหม่ builderimpl2 (); ผู้อำนวยการ 2 ผู้อำนวยการ 3 = ผู้อำนวยการใหม่ 2 (Builder3); ผู้อำนวยการ 3.Construct (); -พิมพ์:
ผู้อำนวยการฝ่ายสร้างคำสั่งสำหรับการก่อสร้างการก่อสร้างชิ้นส่วนการก่อสร้างส่วน B การก่อสร้างส่วน C ผู้อำนวยการสร้างคำสั่งสำหรับการก่อสร้างชิ้นส่วนการก่อสร้าง AA การก่อสร้างส่วน BB การก่อสร้างส่วน CC ผู้อำนวยการผู้สร้างคำสั่งสำหรับชิ้นส่วนก่อสร้าง BB การก่อสร้างส่วน CC การก่อสร้างส่วน AA AA
4. ข้อดีและข้อเสีย (1) ข้อดี:
A. สามารถอนุญาตให้คุณเปลี่ยนการเป็นตัวแทนภายในของผลิตภัณฑ์
B. ห่อหุ้มรหัสอาคารและตัวแทน
C. ให้การควบคุมขั้นตอนนอกเหนือจากกระบวนการก่อสร้าง
(2) ข้อเสีย:
A. มีความจำเป็นที่จะต้องสร้างผลิตภัณฑ์หลากหลายประเภทที่หลากหลาย
5. สถานการณ์การใช้งาน:
(1) เมื่ออัลกอริทึมสำหรับการสร้างวัตถุที่ซับซ้อนควรเป็นอิสระจากส่วนประกอบของวัตถุและวิธีการประกอบ
(2) เมื่อกระบวนการก่อสร้างต้องอนุญาตให้วัตถุที่สร้างขึ้นมีการเป็นตัวแทนที่แตกต่างกัน (วิธีเดียวกันลำดับการดำเนินการที่แตกต่างกันและผลลัพธ์ที่แตกต่างกันจะถูกสร้างขึ้น)