1. วิธีการใช้งาน Factory Method Pattern
Factory Method Pattern เป็นรูปแบบการออกแบบที่เกี่ยวกับการสร้างวัตถุซึ่งให้วิธีการห่อหุ้มกระบวนการสร้างวัตถุในคลาสหลัก โดยที่ลูกค้าจะสามารถสร้างวัตถุโดยการเรียกใช้เมธอดของโรงงานโดยที่ไม่ต้องกังวัตถุวิเคราะห์กระบวนการสร้าง.
2. ลักษณะและข้อดีของ Factory Method Pattern
ลักษณะของ Factory Method Pattern ประกอบด้วย:
- ตัดสินใจที่การสร้างและใช้วัตถุ, ซึ่งลูกค้าจำเป็นต้องกังโรงงานเมธอดและอินเตอร์เฟซของผลิตภัณฑ์นามบัติ
- ระบบสามารถขยายได้โดยการเพิ่มคลาสโรงงานเฉพาะและคลาสผลิตภัณฑ์เฉพาะ, สอดคติกับหลักของเชิงเปิด/เปิดปิด
ข้อดีของ Factory Method Pattern รวมถึง:
- ห่อหุ้มกระบวนการสร้างวัตถุ, ทำให้ระบบมีความยืดหยุ่นและสามารถขยายได้
- ซ่อนรายละเอียดการปฏิบัติของคลาสผลิตภัณฑ์เฉพาะ, ลดความขึ้นอยู่กับลูกค้าและการผูกมัดกับคลาสเฉพาะ
- มีวิธีมาตรฐานในการสร้างผลิตภัณฑ์, สะดวกสบายติดตั้งระบบและขยาย
3. ลักษณะของ Factory Method Pattern
Factory Method Pattern เหมาะสำหรับสถานการณ์ต่อไปนี้:
- ลูกค้าไม่ได้ขึ้นอยู่กับคลาสผลิตภัณฑ์เฉพาะ, แต่ขึ้นอยู่กับอินเตอร์เฟซผลิตภัณฑ์
- ลูกค้าต้องการสร้างวัตถุผลิตภัณฑ์ที่แตกต่างกันตามเงื่อนไขที่แตกต่างกัน
- มีความต้องการแพ็กห่อและซ่อนกระบวนการสร้างวัตถุ
4. การประยุกต์ Factory Method Pattern ใน Golang
4.1 UML แผนภาพคลาส Golang Factory Method Pattern
4.2 ขั้นตอนการประยุกต์ขั้นที่ 1: กำหนดอินเตอร์เฟซผลิตภัณฑ์นามบัติ
package factory
// Product เป็นอินเตอร์เฟซผลิตภัณฑ์นามบัติ
type Product interface {
Operation() string
}
4.3 ขั้นตอนการประยุกต์ขั้นที่ 2: สร้างคลาสภาพผลิตภัณฑ์ที่อินเตอร์ฟซเสริม
package factory
// ConcreteProductA เป็นคลาสผลิตภัณฑ์ที่เป็นภาพเป็นคลาส A
type ConcreteProductA struct{}
// Operation เป็นเมธอดของคลาสผลิตภัณฑ์ A
func (p *ConcreteProductA) Operation() string {
return "ConcreteProductA"
}
// ConcreteProductB เป็นคลาสผลิตภัณฑ์ที่เป็นภาพเป็นคลาส B
type ConcreteProductB struct{}
// Operation เป็นเมธอดของคลาสผลิตภัณฑ์ B
func (p *ConcreteProductB) Operation() string {
return "ConcreteProductB"
}
4.4 ขั้นตอนการประยุกต์ขั้นที่ 3: กำหนดอินเตอร์เฟซโรงงานนามบัติ
package factory
// Factory เป็นอินเตอร์เฟซโรงงานนามบัติ
type Factory interface {
CreateProduct() Product
}
4.5 ขั้นตอนการประยุกต์ขั้นที่ 4: สร้างคลาสโรงงานเฉพาะที่อิมเพล็มเมนท์
package factory
// ConcreteFactoryA เป็นคลาสโรงงานที่เป็นภาพเป็นคลาส A
type ConcreteFactoryA struct{}
// CreateProduct เป็นเมธอดของคลาสโรงงาน A
func (f *ConcreteFactoryA) CreateProduct() Product {
return &ConcreteProductA{}
}
// ConcreteFactoryB เป็นคลาสโรงงานที่เป็นภาพเป็นคลาส B
type ConcreteFactoryB struct{}
// CreateProduct เป็นเมธอดของคลาสโรงงาน B
func (f *ConcreteFactoryB) CreateProduct() Product {
return &ConcreteProductB{}
}
4.6 ขั้นตอนการประยุกต์ขั้นที่ 5: คลายเอ็นท์ช่วงการใช้ Factory Method เพื่อสร้างวัตถุผลิตภัณฑ์
package main
import (
"fmt"
"github.com/your/package/factory"
)
func main() {
// สร้าง Concrete Factory A
factoryA := &factory.ConcreteFactoryA{}
// ชายเวคเมธอดโรงงานเพื่อสร้างวัตถุผลิตภัณฑ์
productA := factoryA.CreateProduct()
fmt.Println(productA.Operation())
// สร้าง Concrete Factory B
factoryB := &factory.ConcreteFactoryB{}
// ชายเวคเมธอดโรงงานเพื่อสร้างวัตถุผลิตภัณฑ์
productB := factoryB.CreateProduct()
fmt.Println(productB.Operation())
}
ในโค้ดด้านบน, เรากำหนดอินเตอร์เฟซผลิตภัณฑ์ Product
และคลาสผลิตภัณฑ์เนื้อความ ConcreteProductA
และ ConcreteProductB
. จากนั้น, เรากำหนดอินเตอร์เฟซโรงงาน Factory
และคลาสโรงงาน ConcreteFactoryA
และ ConcreteFactoryB
. ลูกค้าสามารถสร้างวัตถุผลิตภัณฑ์เฉพาะโดยการเรียกร้องวิธีการโรงงานของคลาสเฉพาะ, ซึ่งจะประสบการณ์ Factory Method pattern.
ด้วยขั้นตอนด้านบน, เราได้ทำการประยุกต์ Factory Method pattern ใน Golang เรียบร้อยแล้ว. วิธีการให้เลี้ยงลูกค้าจากคลาสผลิตภัณฑ์เฉพาะ, ทำให้ลูกค้าสนใจเฉพาะอินเตอร์เฟซผลิตภัณฑ์เท่านั้น. ในขณะเดียวกัน, รายละเอียดในการทำปฏิบัติของคลาสผลิตภัณฑ์เฉพาะถูกห่อผู้และไว้ซ่อนที่คลาสโรงงานเฉพาะ, ที่ทำให้ระบบยืดหยุ่นและสามารถขยายได้หลายขึ้น. Factory Method pattern เป็นรูปแบบที่สร้่างความรู้นและการขยายใช้ในการประยุกต์ในชีวิตสามชาร, โดยเฉพาะเสียแดน้ ซหรือมีความต้องการปัจจุบันที่ต้องการห่อโหลของเนื้ื่องถันค่าน่าน่าเเไมบยบำถารสปรียบดำำาำซำการำร บำเลบำเทียบุ และใบบำำบ ดำปีบำเมำยบำะ้บ.