工廠模式是一種設計模式,用于創建對象,無需指定具體的類,其優點包括解耦創建過程、可擴展性和靈活性,適用于創建過程復雜、需要動態選擇產品或需要提供創建新產品類型能力的情況。
Go 中的工廠模式:實踐與探索
介紹
工廠模式是一種設計模式,用于創建對象,而無需指定具體的類。它允許應用程序在不了解創建過程的情況下獲得所需的對象。
代碼示例
type Product interface {
DoSomething()
}
type ProductA struct {}
func (p *ProductA) DoSomething() {
fmt.Println("ProductA doing something...")
}
type ProductB struct {}
func (p *ProductB) DoSomething() {
fmt.Println("ProductB doing something...")
}
type Factory interface {
CreateProduct() Product
}
type FactoryA struct {}
func (f *FactoryA) CreateProduct() Product {
return &ProductA{}
}
type FactoryB struct {}
func (f *FactoryB) CreateProduct() Product {
return &ProductB{}
}
func main() {
factoryA := &FactoryA{}
productA := factoryA.CreateProduct()
productA.DoSomething() // Output: ProductA doing something...
factoryB := &FactoryB{}
productB := factoryB.CreateProduct()
productB.DoSomething() // Output: ProductB doing something...
}
登錄后復制
實戰案例
工廠模式經常用于解耦創建過程與使用對象。例如,在使用依賴注入框架時,它可以讓你在不直接依賴于具體類的情況下創建對象。
優勢
解耦創建過程:應用程序不再需要了解具體類的創建過程。
可擴展性:可以通過添加新的工廠類輕松添加新的產品類型。
靈活性:允許應用程序在運行時決定要創建的對象類型。
缺點
增加復雜性:引入工廠模式會增加應用程序的復雜性,特別是當有大量不同類型的產品時。
潛在開銷:每個工廠類都必須創建自己的對象實例,這可能會導致性能開銷。
何時使用
考慮使用工廠模式的情況包括:
創建過程復雜或需要根據條件動態選擇產品。
需要解耦創建過程與使用對象。
想要提供創建新產品類型的能力,而不修改現有代碼。






