รูปแบบโรงงานใน C ++

Rup Baeb Rongngan Ni C



รูปแบบโรงงานเป็นวิธีการสร้างวัตถุในการพัฒนาซอฟต์แวร์โดยไม่จำเป็นต้องทราบรายละเอียดเฉพาะเจาะจงว่าสร้างขึ้นอย่างไร มีอินเทอร์เฟซที่เรียบง่ายสำหรับการสร้างวัตถุโดยซ่อนตรรกะการสร้างที่ซับซ้อนไว้เบื้องหลังคลาสโรงงาน มันอยู่ในหมวดหมู่ของรูปแบบการออกแบบที่กล่าวถึงกลไกการสร้างวัตถุ บทความนี้ครอบคลุมรูปแบบโรงงานใน C++

รู้เบื้องต้นเกี่ยวกับรูปแบบโรงงาน

รูปแบบการออกแบบเป็นวิธีการแก้ปัญหาที่เกิดซ้ำในการออกแบบซอฟต์แวร์ รูปแบบโรงงานเป็นหนึ่งในรูปแบบการออกแบบที่ช่วยในการสร้างวัตถุในลักษณะที่ยืดหยุ่นและแยกส่วน

Factory Pattern เป็นรูปแบบการออกแบบเชิงสร้างสรรค์ใน C++ ที่อนุญาตให้สร้างอ็อบเจกต์โดยไม่ต้องรู้คลาสของออบเจกต์อย่างชัดเจน ให้วิธีการสรุปตรรกะการสร้างวัตถุที่ซับซ้อนภายในคลาสโรงงานที่แยกจากกัน สิ่งนี้ทำได้โดยการกำหนดอินเทอร์เฟซทั่วไปสำหรับการสร้างออบเจกต์ โดยกำหนดคลาสเฉพาะของออบเจกต์ที่รันไทม์







แทนที่จะสร้างวัตถุโดยตรง เราใช้วิธีโรงงานเพื่อให้ตัวอย่างของวัตถุที่เราต้องการ ด้วยวิธีนี้ เราสามารถซ่อนขั้นตอนที่ซับซ้อนที่เกี่ยวข้องกับการสร้างวัตถุ และทำให้ง่ายต่อการเปลี่ยนแปลงหรือแก้ไขวัตถุในอนาคต



ทำไมต้องใช้รูปแบบโรงงาน?

มีเหตุผลหลายประการที่เราอาจต้องการใช้รูปแบบโรงงาน เหตุผลหนึ่งคืออนุญาตให้แยกโค้ดจากคลาสเฉพาะได้ โดยใช้วิธีการจากโรงงาน เราสามารถเปลี่ยนคลาสหนึ่งเป็นอีกคลาสหนึ่งได้อย่างง่ายดายโดยไม่ต้องเปลี่ยนรหัสอื่น และทำให้มีประสิทธิภาพมากขึ้น



อีกเหตุผลหนึ่งในการใช้รูปแบบโรงงานคือทำให้โค้ดสามารถทดสอบได้มากขึ้น รูปแบบโรงงานช่วยให้เราสามารถทดสอบรหัสโดยการสร้างวัตถุจำลอง





ต่อไปนี้เป็นเหตุผลเพิ่มเติมว่าทำไมจึงใช้รูปแบบโรงงานใน C ++:

  • รูปแบบ Factory Method จะใช้เมื่อคลาสไม่ทราบล่วงหน้าว่าต้องการสร้างวัตถุใด
  • รูปแบบนี้ใช้เมื่อคลาสอาศัยคลาสย่อยเพื่อระบุวัตถุที่สร้าง
  • มีประโยชน์เมื่อคุณต้องการสรุปตรรกะสำหรับการสร้างวัตถุที่ซับซ้อนในที่เดียว

ตัวอย่าง Factory Pattern ใน C++

ใน C++ เราสามารถนำรูปแบบโรงงานไปใช้โดยการกำหนดคลาสพื้นฐานที่เป็นนามธรรมด้วยวิธีโรงงานเสมือน วิธีนี้ควรส่งคืนตัวชี้ไปยังอินสแตนซ์ของคลาสที่ต้องการ หลังจากนั้น เราสามารถได้รับคลาสที่เป็นรูปธรรมจากคลาสพื้นฐานนี้ และแทนที่เมธอดโรงงานเพื่อส่งคืนอินสแตนซ์ของคลาสที่เหมาะสม



ต่อไปนี้เป็นตัวอย่างของวิธีที่เราอาจใช้รูปแบบโรงงานนี้:

#รวมถึง

ใช้เนมสเปซมาตรฐาน ;

รูปร่างคลาส {

สาธารณะ :

เสมือน เป็นโมฆะ วาด ( ) = 0 ;

คงที่ รูปร่าง * สร้างรูปร่าง ( นานาชาติ พิมพ์ ) ;

} ;

วงกลมชั้น : รูปร่างสาธารณะ {

สาธารณะ :

เป็นโมฆะ วาด ( ) {

ศาล << 'วาดวงกลม' << จบ ;

}

} ;

คลาสสี่เหลี่ยมผืนผ้า : รูปร่างสาธารณะ {

สาธารณะ :

เป็นโมฆะ วาด ( ) {

ศาล << 'วาดรูปสี่เหลี่ยมผืนผ้า' << จบ ;

}

} ;

รูปร่าง * รูปร่าง :: สร้างรูปร่าง ( นานาชาติ พิมพ์ ) {

ถ้า ( พิมพ์ == 1 ) {
กลับ วงกลมใหม่ ( ) ;
} อื่น ถ้า ( พิมพ์ == 2 ) {
กลับ สี่เหลี่ยมผืนผ้าใหม่ ( ) ;
} อื่น {
กลับ nullptr ;
}
}


นานาชาติ หลัก ( ) {

รูปร่าง * วงกลม = รูปร่าง :: สร้างรูปร่าง ( 1 ) ;

วงกลม -> วาด ( ) ;

รูปร่าง * สี่เหลี่ยมผืนผ้า = รูปร่าง :: สร้างรูปร่าง ( 2 ) ;

สี่เหลี่ยมผืนผ้า -> วาด ( ) ;

กลับ 0 ;

}

ในตัวอย่างนี้ เรามีคลาส Shape ที่มีคลาสที่ได้รับมา 2 คลาส ได้แก่ Circle และ Rectangle คลาส Shape มีการวาดฟังก์ชันเสมือนบริสุทธิ์ () ซึ่งใช้งานโดยคลาสที่ได้รับ คลาส Shape ยังมีฟังก์ชันสแตติก createShape (ประเภท int) ซึ่งทำหน้าที่เป็นเมธอดโรงงานในการสร้างอินสแตนซ์ของคลาสที่ได้รับตามประเภทที่ระบุ ฟังก์ชันการวาด () ถูกเรียกบนวัตถุที่สร้างขึ้นเพื่อแสดงพฤติกรรมเฉพาะ

  รูปภาพที่มีข้อความ แบบอักษร ภาพหน้าจอ คำอธิบาย สร้างขึ้นโดยอัตโนมัติ

บทสรุป

Factory Pattern เป็นรูปแบบการออกแบบเชิงสร้างสรรค์ใน C++ ที่อนุญาตให้สร้างอ็อบเจกต์โดยไม่ต้องรู้คลาสของออบเจกต์อย่างชัดเจน มีอินเทอร์เฟซที่เรียบง่ายสำหรับการสร้างวัตถุโดยซ่อนตรรกะการสร้างที่ซับซ้อนไว้เบื้องหลังคลาสโรงงาน สิ่งนี้ทำได้โดยการกำหนดอินเทอร์เฟซทั่วไปสำหรับการสร้างออบเจกต์ โดยกำหนดคลาสเฉพาะของออบเจกต์ที่รันไทม์ อ่านเพิ่มเติมเกี่ยวกับรูปแบบของโรงงานได้ในบทความนี้