简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,用于创建对象而无需指定要创建的具体类。这个模式封装了创建对象的代码,使得代码更加模块化、易于维护和扩展。
2. 简单工厂模式的结构
简单工厂模式主要由三部分组成:
- 工厂类(Factory Class):负责实现创建所有实例的内部逻辑。
- 抽象产品类(Abstract Product Class):为工厂创建的对象定义接口或抽象类。
- 具体产品类(Concrete Product Classes):实现抽象产品类的具体产品。
3. Go语言实现示例
下面是一个使用Go语言实现的简单工厂模式示例:
代码语言:javascript复制package main
import "fmt"
// 产品接口
type Product interface {
Use() string
}
// 具体产品A
type ConcreteProductA struct{}
func (p *ConcreteProductA) Use() string {
return "Product A"
}
// 具体产品B
type ConcreteProductB struct{}
func (p *ConcreteProductB) Use() string {
return "Product B"
}
// 工厂类
type Factory struct{}
func (f *Factory) CreateProduct(type string) Product {
switch type {
case "A":
return &ConcreteProductA{}
case "B":
return &ConcreteProductB{}
default:
return nil
}
}
func main() {
factory := Factory{}
productA := factory.CreateProduct("A")
fmt.Println(productA.Use())
productB := factory.CreateProduct("B")
fmt.Println(productB.Use())
}
4. 简单工厂模式的应用场景
简单工厂模式适用于以下场景:
- 创建对象的逻辑相对简单时。
- 客户端不需要知道它所创建的对象的具体类型。
- 需要灵活地创建一系列相关或依赖对象。
5. 简单工厂模式的优缺点
优点:
- 可以将对象的创建和使用分离,降低系统的耦合度。
- 客户端无需知道具体产品类的类名,只需要知道对应的工厂即可。
缺点:
- 工厂类的职责相对过重,增加新的产品时需要修改工厂类的逻辑,违背了开闭原则。
6. 结语
简单工厂模式是一种比较简单的设计模式,适合于产品种类相对固定的情况。在实际开发中,我们可以根据实际需要选择是否应用此模式。