บทความนี้อธิบายวิธีการใช้งานแบบจำลองโรงงานของรูปแบบการออกแบบ Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
แบบจำลองโรงงานส่วนใหญ่ให้อินเทอร์เฟซในช่วงเปลี่ยนผ่านสำหรับการสร้างวัตถุเพื่อป้องกันและแยกกระบวนการเฉพาะของการสร้างวัตถุเพื่อให้บรรลุวัตถุประสงค์ในการปรับปรุงความยืดหยุ่น
แบบจำลองโรงงานแบ่งออกเป็นสามประเภท:
1) แบบจำลองโรงงานง่าย ๆ : ไม่เอื้อต่อการสร้างชุดผลิตภัณฑ์;
2) วิธีการโรงงาน: หรือที่รู้จักกันในชื่อ Polymorphic Factory;
3) โมเดลโรงงานนามธรรม: หรือที่รู้จักกันในชื่อกล่องเครื่องมือมันผลิตครอบครัวผลิตภัณฑ์ แต่ไม่เอื้อต่อการสร้างผลิตภัณฑ์ใหม่
1. แบบจำลองโรงงานง่ายๆ
โหมดโรงงานง่าย ๆ เรียกว่าโหมดวิธีการคงที่ของโรงงาน โดยการเปลี่ยนชื่อคุณจะเห็นว่ารูปแบบนี้ต้องง่ายมาก วัตถุประสงค์ของมันง่าย: กำหนดอินเทอร์เฟซสำหรับการสร้างวัตถุ
ในรูปแบบโรงงานอย่างง่ายคลาสโรงงานอยู่ที่ศูนย์กลางของการเรียกอินสแตนซ์ไปยังคลาสผลิตภัณฑ์ซึ่งกำหนดระดับผลิตภัณฑ์ที่ควรมีการสร้างอินสแตนซ์เช่นเดียวกับตำรวจจราจรยืนอยู่ในการไหลของยานพาหนะและตัดสินใจที่จะปล่อยยานพาหนะในทิศทางที่จะไหล มาดูองค์ประกอบของมันกันเถอะ:
1) บทบาทจากโรงงาน: นี่คือแกนหลักของโมเดลนี้ซึ่งมีตรรกะทางธุรกิจและตรรกะการตัดสินบางอย่าง ใน Java มันมักจะถูกนำไปใช้โดยคลาสคอนกรีต
2) บทบาทของผลิตภัณฑ์นามธรรม: โดยทั่วไปจะเป็นคลาสหลักที่สืบทอดมาจากผลิตภัณฑ์เฉพาะหรืออินเทอร์เฟซที่นำมาใช้ ดำเนินการโดยอินเทอร์เฟซหรือคลาสนามธรรมใน Java
3) บทบาทผลิตภัณฑ์เฉพาะ: วัตถุที่สร้างโดยคลาสโรงงานเป็นตัวอย่างของบทบาทนี้ ดำเนินการโดยคลาสคอนกรีตใน Java
2. โมเดลวิธีการเป็นโรงงาน
รูปแบบวิธีการโรงงานเป็นสิ่งที่เป็นนามธรรมและการส่งเสริมของแบบจำลองโรงงานอย่างง่าย ในโมเดลวิธีการโรงงานมันไม่ได้ถูกกำหนดโดยคลาสโรงงานเดียวที่คลาสผลิตภัณฑ์ควรได้รับการสร้างอินสแตนซ์ การตัดสินใจครั้งนี้ถูกส่งมอบให้กับคลาสย่อยของโรงงานนามธรรมที่จะทำ มาดูองค์ประกอบของมันกันเถอะ:
1) บทบาทของโรงงานนามธรรม: นี่คือแกนหลักของรูปแบบวิธีการโรงงานมันไม่มีส่วนเกี่ยวข้องกับแอปพลิเคชัน มันเป็นอินเทอร์เฟซที่บทบาทโรงงานเฉพาะจะต้องใช้หรือคลาสแม่ที่ต้องสืบทอด ใน Java มันถูกนำไปใช้โดยคลาสนามธรรมหรืออินเทอร์เฟซ
2) บทบาทโรงงานเฉพาะ: มันมีรหัสที่เกี่ยวข้องกับตรรกะทางธุรกิจเฉพาะ เรียกโดยแอปพลิเคชันเพื่อสร้างวัตถุผลิตภัณฑ์เฉพาะที่สอดคล้องกัน
3) บทบาทของผลิตภัณฑ์นามธรรม: เป็นคลาสหลักที่สืบทอดมาจากผลิตภัณฑ์เฉพาะหรืออินเทอร์เฟซที่นำมาใช้ ใน Java โดยทั่วไปจะมีคลาสที่เป็นนามธรรมหรืออินเทอร์เฟซเพื่อนำไปใช้
4) บทบาทผลิตภัณฑ์เฉพาะ: วัตถุที่สร้างขึ้นโดยบทบาทโรงงานเฉพาะเป็นตัวอย่างของบทบาทนี้ ดำเนินการโดยคลาสคอนกรีตใน Java
รูปแบบวิธีการโรงงานใช้คลาสย่อยหลายรายการที่สืบทอดมาจากบทบาทโรงงานนามธรรมเพื่อแทนที่ "คลาสพระเจ้า" ในรูปแบบโรงงานง่าย ๆ ดังที่ได้กล่าวไว้ข้างต้นสิ่งนี้จะแบ่งปันแรงกดดันต่อวัตถุ และสิ่งนี้จะทำให้โครงสร้างมีความยืดหยุ่น - เมื่อมีการสร้างผลิตภัณฑ์ใหม่ (เช่นรถยนต์ของ Nouveau Riche) ตราบใดที่มันถูกสร้างขึ้นตามสัญญาที่ได้รับจากบทบาทผลิตภัณฑ์นามธรรมและบทบาทโรงงานนามธรรมสามารถใช้งานได้โดยลูกค้าโดยไม่ต้องปรับเปลี่ยนรหัสที่มีอยู่ จะเห็นได้ว่าโครงสร้างของบทบาทโรงงานยังสอดคล้องกับหลักการของการเปิดและปิด!
รหัสมีดังนี้:
// บทคัดย่อบทบาทผลิตภัณฑ์อินเทอร์เฟซสาธารณะสามารถเคลื่อนย้ายได้ {void run ();} // บทบาทผลิตภัณฑ์เฉพาะเครื่องบินระดับสาธารณะโดยใช้การเคลื่อนย้าย {@Override public void run () {system.out.println ("ระนาบ .... "); }} BROOM คลาสสาธารณะใช้การเคลื่อนย้าย {@Override โมฆะสาธารณะเรียกใช้ () {System.out.println ("Broom ...... "); }} // บทคัดย่อโรงงานสาธารณะคลาสนามธรรม VehicleFactory {บทคัดย่อเคลื่อนย้ายได้สร้าง ();} // พิเศษจากโรงงานระดับสาธารณะ PlaneFactory ขยายยานพาหนะ {public Movable Create () {กลับระนาบใหม่ (); }} broomfactory ระดับสาธารณะขยายยานพาหนะ {public movable create () {return New Broom (); }} // การทดสอบคลาสสาธารณะการทดสอบระดับสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {changefactory factory = new Broomfactory (); MOVABLE M = FARTORY.CREATE (); m.run (); -3. รูปแบบโรงงานนามธรรม
รหัสมีดังนี้
// บทคัดย่อระดับโรงงานคลาสนามสกุลนามธรรมนามธรรม {public public ยานพาหนะ createvehicle (); อาวุธนามธรรมสาธารณะ CreateWeapon (); Public Food Food CreateFood ();} // คลาสโรงงานคอนกรีตที่ซึ่งอาหาร, ยานพาหนะ, อาวุธเป็นคลาสนามธรรม, ชั้นเรียนสาธารณะ defaultFactory ขยายบทคัดย่อ {@Override อาหารสาธารณะ CreateFood () {คืน Apple ใหม่ (); } @Override ยานพาหนะสาธารณะ createvehicle () {ส่งคืนรถใหม่ (); } @Override อาวุธสาธารณะ createWeapon () {ส่งคืน AK47 () ใหม่; }} // การทดสอบระดับระดับการทดสอบสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {AbstractFactory f = new defaultFactory (); ยานพาหนะ v = f.createvehicle (); v.run (); อาวุธ w = f.createWeapon (); w.shoot (); อาหาร a = f.createfood (); A.printName (); -ในรูปแบบของโรงงานนามธรรมผลิตภัณฑ์นามธรรมอาจเป็นหนึ่งหรือมากกว่านั้นจึงสร้างครอบครัวผลิตภัณฑ์อย่างน้อยหนึ่งครอบครัว ในกรณีของตระกูลผลิตภัณฑ์เดียวรูปแบบโรงงานนามธรรมจริง ๆ แล้วลดลงไปในรูปแบบวิธีการโรงงาน
สรุป:
(1) รูปแบบโรงงานง่าย ๆ คือการสร้างอินสแตนซ์ของคลาสอื่น ๆ โดยคลาสเฉพาะ คลาสแม่เหมือนกันและคลาสแม่มีความเฉพาะเจาะจง
(2) รูปแบบวิธีการโรงงานคือมีคลาสหลักที่เป็นนามธรรมที่กำหนดอินเทอร์เฟซสาธารณะและคลาสย่อยมีหน้าที่สร้างวัตถุคอนกรีต จุดประสงค์ของสิ่งนี้คือการชะลอการสร้างอินสแตนซ์ของคลาสไปยังคลาสย่อย
(3) รูปแบบโรงงานนามธรรมจัดให้มีอินเทอร์เฟซเพื่อสร้างชุดของวัตถุที่เกี่ยวข้องหรือพึ่งพาซึ่งกันและกันโดยไม่ต้องระบุคลาสเฉพาะของพวกเขา มันกำหนดเป้าหมายโครงสร้างแบบลำดับชั้นด้วยผลิตภัณฑ์หลายอย่าง แบบจำลองวิธีการโรงงานมีวัตถุประสงค์เพื่อโครงสร้างลำดับชั้นของผลิตภัณฑ์
สำหรับเนื้อหาที่เกี่ยวข้องกับ Java เพิ่มเติมผู้อ่านที่สนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินการ Java Dom Node", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน