Factory Pattern เป็นหนึ่งใน Design Patterns กลุ่ม Creational ที่ได้รับความนิยมมากที่สุด หน้าที่หลักของมันคือการ “แยกส่วนการสร้าง Object ออกจากส่วนการใช้งาน” เพื่อให้ Code ของเรายืดหยุ่นและดูแลรักษาง่ายขึ้นครับ
🏗️ Factory Pattern คืออะไร ?
ลองจินตนาการถึงโรงงานจริง ๆ ครับ เมื่อคุณต้องการ “ปลั๊กไฟ” คุณเดินไปที่โรงงานแล้วบอกว่า “ขอปลั๊กไฟ 1 อัน” โรงงานจะจัดการขั้นตอนการหล่อพลาสติก การต่อสายไฟ และส่งสินค้าสำเร็จรูปให้คุณ โดยที่คุณ ไม่จำเป็นต้องรู้เลย ว่าเครื่องจักรตัวไหนทำงาน หรือผสมพลาสติกอย่างไร
ในทาง Software: Factory Pattern คือคลาสที่ทำหน้าที่สร้าง Object ให้เรา โดยที่เรา ไม่ต้องใช้คำสั่ง new เพื่อระบุคลาสที่เจาะจงเอง
🛠️ ทำไมต้องใช้ Factory Pattern ?
- Loose Coupling: ลดการยึดติดกันระหว่างคลาส ถ้าในอนาคตคุณเปลี่ยนชื่อคลาสลูก หรือเพิ่มประเภทสินค้าใหม่ คุณแก้แค่ที่ Factory ที่เดียว
- Code Cleanliness: ส่วนที่เรียกใช้งาน จะดูสะอาดขึ้น เพราะไม่ต้องมี Logic การตัดสินใจ ว่าต้องสร้าง Object ตัวไหน กระจัดกระจายอยู่ทั่วไป
- Centralized Control: การสร้าง Object ทั้งหมดถูกควบคุมจากจุดเดียว ง่ายต่อการทำ Unit Testing หรือใส่ Log
💻 ตัวอย่างการใช้งาน
สมมติว่าเรากำลังสร้างระบบ แจ้งเตือน ที่รองรับทั้ง Email และ SMS
สร้าง Interface
เราต้องกำหนดก่อนว่า “สินค้า” ทุกอย่างที่ออกจากโรงงานต้องทำอะไรได้บ้าง
Plain Text
Plain Text
public interface INotification { void Send (string message) ;
}