อ่าน 3 นาที
รูปแบบการสร้างสรรค์
รูป แบบการสร้างวัตถุ (Creational pattern ) เป็น รูปแบบการออกแบบซอฟต์แวร์ สำหรับการสร้าง วัตถุ ในลักษณะที่เหมาะสมกับสถานการณ์เฉพาะ เนื่องจากการสร้างวัตถุที่มีอยู่แล้ว (เช่น ผ่าน...
รูปแบบการสร้างสรรค์
รูปแบบการสร้างวัตถุ (Creational pattern ) เป็นรูปแบบการออกแบบซอฟต์แวร์สำหรับการสร้างวัตถุในลักษณะที่เหมาะสมกับสถานการณ์เฉพาะ เนื่องจากการสร้างวัตถุที่มีอยู่แล้ว (เช่น ผ่านภาษาโปรแกรม ) บางครั้งอาจส่งผลให้เกิด ข้อจำกัดใน การออกแบบกลไกการสร้างแบบกำหนดเองจึงสามารถให้การออกแบบที่ดีกว่าได้ รูปแบบการสร้างวัตถุมีเป้าหมายเพื่อแยกระบบออกจากวิธีการสร้าง การประกอบ และการแสดงวัตถุ โดยจะเพิ่มความยืดหยุ่นของระบบในแง่ของสิ่งที่จะสร้าง ใครจะสร้าง อย่างไร และเมื่อใดในการสร้างวัตถุ[ 1 ]
รูปแบบการสร้างประกอบด้วยสองแง่มุมหลัก หนึ่งคือการห่อหุ้มความรู้เกี่ยวกับคลาส ที่เป็นรูปธรรมที่ ระบบใช้ อีกประการหนึ่งคือการซ่อนวิธีการสร้างและรวมอินสแตนซ์ ของคลาสที่เป็นรูปธรรมเหล่านี้ [ 2 ]
รูปแบบการออกแบบเชิงสร้างสรรค์แบ่งออกเป็นรูปแบบการสร้างวัตถุและรูปแบบการสร้างคลาส รูปแบบการสร้างวัตถุจะเลื่อนการสร้างวัตถุบางส่วนไปยังวัตถุอื่น ในขณะที่รูปแบบการสร้างคลาสจะเลื่อนการสร้างวัตถุไปยังคลาสย่อย[ 3 ]
การใช้งาน
เนื่องจากวิศวกรรมซอฟต์แวร์สมัยใหม่พึ่งพาการประกอบวัตถุมากกว่าการสืบทอดคลาส จึงมีการเน้นไปที่การกำหนดพฤติกรรมพื้นฐานจำนวนน้อยลงที่สามารถประกอบกันเป็นพฤติกรรมที่ซับซ้อนมากขึ้นแทนที่จะใช้การเขียนโค้ดแบบตายตัว[ 4 ]พฤติกรรมแบบตายตัวนั้นไม่ยืดหยุ่น เพราะต้องเขียนทับหรือเขียนใหม่ทั้งหมดเพื่อเปลี่ยนแปลงส่วนต่างๆ ของการออกแบบ นอกจากนี้ การเขียนโค้ดแบบตายตัวยังไม่ส่งเสริมการนำกลับมาใช้ใหม่และทำให้ยากต่อการติดตามข้อผิดพลาด ด้วยเหตุผลเหล่านี้ รูปแบบการสร้างจึงมีประโยชน์มากกว่าพฤติกรรมแบบตายตัว รูปแบบการสร้างทำให้การออกแบบมีความยืดหยุ่นมากขึ้น โดยมีวิธีการต่างๆ ในการลบการอ้างอิงที่ชัดเจนในคลาสที่เป็นรูปธรรมออกจากโค้ดที่ต้องการสร้างอินสแตนซ์ของคลาสเหล่านั้น[ 5 ]กล่าวอีกนัยหนึ่งคือ พวกมันสร้างความเป็นอิสระให้กับวัตถุและคลาส
ควรพิจารณาใช้รูปแบบการสร้างสรรค์เมื่อ:
- ระบบควรเป็นอิสระจากวิธีการสร้างวัตถุและผลิตภัณฑ์ของระบบนั้น ๆ
- ชุดของวัตถุที่เกี่ยวข้องกันถูกออกแบบมาเพื่อให้ใช้งานร่วมกันได้
- การซ่อนรายละเอียดการใช้งานของไลบรารีคลาสหรือผลิตภัณฑ์ โดยแสดงเฉพาะส่วนต่อประสาน (interface) เท่านั้น
- สร้างตัวแทนที่แตกต่างกันของวัตถุที่ซับซ้อนและเป็นอิสระต่อกัน
- คลาสหนึ่งต้องการให้คลาสย่อยนำเอาสิ่งที่มันสร้างขึ้นมาใช้งาน
- การสร้างอินสแตนซ์ของคลาสจะถูกกำหนดในระหว่างการทำงานของโปรแกรม
- จะต้องมีอินสแตนซ์เดียว และไคลเอนต์สามารถเข้าถึงอินสแตนซ์นี้ได้ตลอดเวลา
- อินสแตนซ์ควรสามารถขยายได้โดยไม่ต้องแก้ไขใดๆ
โครงสร้าง

ด้านล่างนี้คือแผนภาพคลาสอย่างง่ายที่รูปแบบการสร้างส่วนใหญ่มีเหมือนกัน โปรดทราบว่ารูปแบบการสร้างที่แตกต่างกันนั้นต้องการคลาสที่เกี่ยวข้องเพิ่มเติมและแตกต่างกันไป
ผู้เข้าร่วม :
- Creator : ประกาศอินเทอร์เฟซของอ็อบเจ็กต์ ส่งคืนอ็อบเจ็กต์
- ConcreteCreator : ทำหน้าที่สร้างอินเทอร์เฟซของอ็อบเจ็กต์
ตัวอย่าง
ตัวอย่างของรูปแบบการออกแบบเชิงสร้างสรรค์ ได้แก่:
- รูปแบบโรงงานนามธรรม
- คลาสจะร้องขอวัตถุที่ต้องการจากวัตถุโรงงานแทนที่จะสร้างวัตถุโดยตรง[ 6 ]
- รูปแบบวิธีการผลิต
- รวมศูนย์การสร้างวัตถุประเภทเฉพาะโดยเลือกการใช้งานหนึ่งในหลายๆ แบบ[ 7 ]
- รูปแบบผู้สร้าง
- แยกกระบวนการสร้างวัตถุที่ซับซ้อนออกจากวิธีการแสดงผล เพื่อให้กระบวนการสร้างเดียวกันสามารถสร้างการแสดงผลที่แตกต่างกันได้
- รูปแบบการฉีดการพึ่งพา (Dependency injection pattern)
- คลาสจะรับอ็อบเจ็กต์ที่ต้องการจากตัวฉีดแทนที่จะสร้างอ็อบเจ็กต์โดยตรง
- รูปแบบการเริ่มต้นแบบขี้เกียจ
- กลยุทธ์ในการชะลอการสร้างวัตถุ การคำนวณค่า หรือกระบวนการที่มีค่าใช้จ่ายสูงอื่นๆ จนกว่าจะถึงเวลาที่จำเป็นต้องใช้ครั้งแรก
- รูปแบบพูลวัตถุ
- หลีกเลี่ยงการจัดซื้อและปล่อยทรัพยากรที่มีราคาแพง ด้วยการรีไซเคิลสิ่งของที่ไม่ได้ใช้งานแล้ว
- รูปแบบต้นแบบ
- ใช้เมื่อประเภทของวัตถุที่จะสร้างถูกกำหนดโดยอินสแตนซ์ต้นแบบ ซึ่งจะถูกคัดลอกเพื่อสร้างวัตถุใหม่
- รูปแบบซิงเกิลตัน
- จำกัดการสร้างอินสแตนซ์ของคลาสให้มีเพียงวัตถุเดียว[ 8 ]
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ รูปแบบการสร้างสรรค์
รูป แบบการสร้างวัตถุ (Creational pattern ) เป็น รูปแบบการออกแบบซอฟต์แวร์ สำหรับการสร้าง วัตถุ ในลักษณะที่เหมาะสมกับสถานการณ์เฉพาะ เนื่องจากการสร้างวัตถุที่มีอยู่แล้ว (เช่น ผ่าน...
การใช้งาน
เนื่องจากวิศวกรรมซอฟต์แวร์สมัยใหม่พึ่งพา การประกอบวัตถุ มากกว่าการสืบทอดคลาส จึงมีการเน้นไปที่การกำหนดพฤติกรรมพื้นฐานจำนวนน้อยลงที่สามารถประกอบกันเป็นพฤติกรรมที่ซับซ้อนมากขึ้นแทนที่จะใช้การเขียนโค้ดแบบตายตัว [ 4 ] พฤติกรรมแบบตายตัวนั้นไม่ยืดหยุ่น...
โครงสร้าง
ด้านล่างนี้คือแผนภาพคลาสอย่างง่ายที่รูปแบบการสร้างส่วนใหญ่มีเหมือนกัน โปรดทราบว่ารูปแบบการสร้างที่แตกต่างกันนั้นต้องการคลาสที่เกี่ยวข้องเพิ่มเติมและแตกต่างกันไป
ตัวอย่าง
ตัวอย่างของรูปแบบการออกแบบเชิงสร้างสรรค์ ได้แก่: