Golang|工厂模式
- 工厂模式是一种创建型设计模式,它的核心思想是:把对象的创建过程封装起来,不直接在代码中 new 一个对象,而是通过一个“工厂”来生成对象。
- 这样做的好处是:
- 降低了代码之间的耦合(依赖具体类减少)
- 更方便扩展和维护(想换对象,只需要改工厂逻辑)
- 工厂模式 = 把"创建对象"这件事封装起来,让代码更灵活、更易扩展、更易维护。
// 以简单工厂模式为例,假设我们要生产小狗和小猫对象:package mainimport "fmt"// 1. 定义动物接口
type Animal interface {Speak()
}// 2. 具体的狗结构体
type Dog struct{}func (d Dog) Speak() {fmt.Println("汪汪!")
}// 3. 具体的猫结构体
type Cat struct{}func (c Cat) Speak() {fmt.Println("喵喵!")
}// 4. 工厂类
type AnimalFactory struct{}// CreateAnimal 是工厂方法
func (a AnimalFactory) CreateAnimal(animalType string) Animal {switch animalType {case "dog":return Dog{}case "cat":return Cat{}default:return nil}
}// 5. 主函数(客户端使用)
func main() {factory := AnimalFactory{}animal1 := factory.CreateAnimal("dog")if animal1 != nil {animal1.Speak() // 输出:汪汪!}animal2 := factory.CreateAnimal("cat")if animal2 != nil {animal2.Speak() // 输出:喵喵!}
}
- 工厂模式用于生成符合统一接口的KV数据库实例。
- 工厂函数getKVDB接受数据库类型和本地存储路径作为参数,返回一个IKeyValueDB接口。
- 工厂函数内部根据参数创建具体的数据库实例,如Badger或Boat,并打开数据库。
- 工厂模式的思想是能够生成多种产品,但所有产品都实现同一个接口。