Golang 工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,而无需暴露对象的具体实现。在 Golang 中,工厂模式通常由一个工厂函数来实现,该函数根据客户端的请求返回不同类型的对象。
工厂模式有三种类型:简单工厂模式、工厂方法模式和抽象工厂模式。以下是这些模式的简要介绍:
简单工厂模式:简单工厂模式通过一个公共的工厂方法来创建对象,该方法接受一个参数,根据参数的值创建相应的对象。
工厂方法模式:工厂方法模式允许子类决定创建对象的类型。在工厂方法模式中,父类提供了一个接口或抽象类,子类实现此接口或抽象类,并根据需要创建相应的对象。
抽象工厂模式:抽象工厂模式提供了一种将一组相关或独立的对象组合在一起创建的方式。在抽象工厂模式中,一个工厂可以创建多个产品系列,每个产品系列都包含多个具体产品。
示例代码如下:
// 定义工厂接口 type Factory interface {
Create() Product
}
// 定义产品接口 type Product interface {
GetName() string
}
// 定义两种不同的产品 type Product1 struct{} func (p *Product1) GetName() string {
return "Product1"
}
type Product2 struct{} func (p *Product2) GetName() string {
return "Product2"
}
// 定义两种不同的工厂 type Factory1 struct{} func (f *Factory1) Create() Product {
return &Product1{}
}
type Factory2 struct{} func (f *Factory2) Create() Product {
return &Product2{}
}
// 使用工厂模式创建对象 func main() {
f1 := &Factory1{}
p1 := f1.Create()
fmt.Println(p1.GetName())
f2 := &Factory2{}
p2 := f2.Create()
fmt.Println(p2.GetName())
} 在上面的示例代码中,我们定义了一个工厂接口和一个产品接口。然后,我们实现了两个不同的产品并实现了它们的方法。接着,我们定义了两个不同的工厂,并实现了工厂接口中的方法来创建相应的产品。最后,我们使用工厂模式创建了两个不同的产品。