คำจำกัดความของรูปแบบวิธีการโรงงาน
ความหมายของรูปแบบวิธีการโรงงานคือการกำหนดอินเทอร์เฟซโรงงานสำหรับการสร้างวัตถุผลิตภัณฑ์และเลื่อนการสร้างงานจริงไปยังคลาสย่อย คลาสโรงงานหลักจะไม่รับผิดชอบต่อการสร้างผลิตภัณฑ์อีกต่อไปดังนั้นคลาสหลักจะกลายเป็นบทบาทของโรงงานนามธรรมและรับผิดชอบเฉพาะอินเทอร์เฟซที่ต้องดำเนินการโดยคลาสย่อยของโรงงานเท่านั้น ข้อได้เปรียบของสิ่งที่เป็นนามธรรมต่อไปคือโมเดลวิธีการโรงงานสามารถเปิดใช้งานระบบเพื่อแนะนำผลิตภัณฑ์ใหม่โดยไม่ต้องแก้ไขบทบาทของโรงงานเฉพาะ
มันมีบทบาทต่อไปนี้:
ไดอะแกรมคลาส UML ของรูปแบบ
ตัวอย่าง
สมมติว่ามีการเติมสามครั้งคือการเติมสีแดงการเติมสีน้ำเงินและการเติมสีดำ ผู้ใช้หวังว่าจะใช้ปากกา Ballpoint เพื่อชี้แจงสีของการเติม
คำอธิบายและการใช้โครงสร้างของรูปแบบ
1. ผลิตภัณฑ์บทคัดย่อ: Pencore.java
บทคัดย่อระดับสาธารณะ Pencore {String Color; Public Public Void Writeword (String s);} 2. ผลิตภัณฑ์เฉพาะ (concreteproduct) _1: redpencore.java
ระดับสาธารณะ RedPenCore ขยาย Pencore {redPenCore () {color = "red"; } โมฆะสาธารณะ writeword (สตริง s) {system.out.println ("เขียนคำว่า"+color+":"+s); - ผลิตภัณฑ์เฉพาะ (concreteproduct) _2: bluepencore.java
คลาสสาธารณะ BluePencore ขยาย pencore {bluepencore () {color = "blue"; } โมฆะสาธารณะ writeword (สตริง s) {system.out.println ("เขียนคำว่า"+color+":"+s); - ผลิตภัณฑ์เฉพาะ (concreteproduct) _3: blackpencore.java
Public Class BlackPencore ขยาย Pencore {blackpencore () {color = "black"; } โมฆะสาธารณะ writeword (สตริง s) {system.out.println ("เขียนคำว่า"+color+":"+s); - 3. ตัวสร้าง: ballpen.java
บทคัดย่อระดับสาธารณะ ballpen {ballpen () {system.out.println ("ผลิตปากกา ballpoint ด้วย"+getPencore (). color+"Refill core"); } สาธารณะนามธรรม Pencore getPencore (); // วิธีโรงงาน} 4. คอนกรีตเทคเรทเตอร์:
redballpen.javapublic คลาส Redballpen ขยาย ballpen {pencore pencore getPencore () {ส่งคืนใหม่ redpencore (); }} blueballpen.javapublic Class Blueballpen ขยาย ballpen {Pencore Pencore getPencore () {กลับ bluepencore ใหม่ (); }} blackballpen.javapublic Class Blackballpen ขยาย ballpen {Pencore Pencore getPencore () {ส่งคืน BlackPencore ใหม่ (); - 5. Application.java
แอปพลิเคชันระดับสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง args []) {pencore pencore; ballpen ballpen = New Blueballpen (); pencore = ballpen.getPencore (); pencore.writeword ("สวัสดีฉันดีใจที่ได้รู้จักคุณ"); ballpen = new redballpen (); pencore = ballpen.getPencore (); pencore.writeword ("คุณเป็นอย่างไรบ้าง"); ballpen = ใหม่ blackballpen (); pencore = ballpen.getPencore (); pencore.writeword ("ยินดีที่ได้รู้จัก"); - สรุป
รูปแบบวิธีการโรงงานเป็นของรูปแบบการสร้างชั้นเรียน ในโหมดวิธีการโรงงานคลาสพาเรนต์ของโรงงานมีหน้าที่กำหนดอินเทอร์เฟซสาธารณะสำหรับการสร้างวัตถุผลิตภัณฑ์ในขณะที่คลาสย่อยของโรงงานมีหน้าที่สร้างวัตถุผลิตภัณฑ์ที่เฉพาะเจาะจง วัตถุประสงค์ของสิ่งนี้คือการชะลอการดำเนินงานอินสแตนซ์ของคลาสผลิตภัณฑ์ไปยังคลาสย่อยของโรงงานนั่นคือเพื่อกำหนดคลาสผลิตภัณฑ์เฉพาะควรได้รับการสร้างอินสแตนซ์ผ่านคลาสย่อยของโรงงาน
แบบจำลองวิธีการโรงงานเป็นสิ่งที่เป็นนามธรรมและการส่งเสริมแบบจำลองโรงงานอย่างง่าย เนื่องจากการใช้ polymorphism เชิงวัตถุรูปแบบวิธีการโรงงานรักษาข้อดีของรูปแบบโรงงานอย่างง่ายและเอาชนะข้อเสียของมัน ในโมเดลวิธีการโรงงานคลาสโรงงานหลักจะไม่รับผิดชอบต่อการสร้างผลิตภัณฑ์ทั้งหมดอีกต่อไป แต่จะให้การสร้างที่เฉพาะเจาะจงกับคลาสย่อย คลาสหลักนี้มีหน้าที่เฉพาะในการให้อินเทอร์เฟซที่โรงงานเฉพาะต้องใช้งาน แต่ไม่ใช่รายละเอียดของการสร้างอินสแตนซ์ของคลาสผลิตภัณฑ์ สิ่งนี้ช่วยให้โมเดลวิธีการโรงงานช่วยให้ระบบสามารถแนะนำผลิตภัณฑ์ใหม่โดยไม่ต้องปรับเปลี่ยนบทบาทของโรงงาน ข้อได้เปรียบหลักของโมเดลวิธีการโรงงานคือเมื่อเพิ่มคลาสผลิตภัณฑ์ใหม่ไม่จำเป็นต้องปรับเปลี่ยนระบบที่มีอยู่และห่อหุ้มรายละเอียดการสร้างของวัตถุผลิตภัณฑ์ ระบบมีความยืดหยุ่นและความยืดหยุ่นที่ดี ข้อเสียของมันคือมันต้องเพิ่มโรงงานใหม่ในขณะที่เพิ่มผลิตภัณฑ์ใหม่ส่งผลให้ชั้นเรียนของระบบคู่ซึ่งเพิ่มความซับซ้อนของระบบในระดับหนึ่ง