在Golang中,工廠模式可以通過使用接口和結構體來實現。下面是一個簡單的例子:
首先,定義一個接口,表示產品的抽象:
type Product interface {
GetName() string
SetName(name string)
}
然后,定義一個結構體,表示具體的產品:
type ConcreteProduct struct {
name string
}
func (p *ConcreteProduct) GetName() string {
return p.name
}
func (p *ConcreteProduct) SetName(name string) {
p.name = name
}
接下來,定義一個工廠接口:
type Factory interface {
CreateProduct() Product
}
然后,實現具體的工廠:
type ConcreteFactory struct{}
func (f *ConcreteFactory) CreateProduct() Product {
return &ConcreteProduct{}
}
最后,可以使用工廠來創建產品:
func main() {
factory := &ConcreteFactory{}
product := factory.CreateProduct()
product.SetName("Product A")
fmt.Println(product.GetName()) // 輸出:Product A
}
通過工廠模式,我們可以將對象的創建和使用分離開來,使得代碼更加可擴展和靈活。