在通用的工厂模式中,一般涉及到 简单工厂模式 (顾名思义:工厂 > 创建)、工厂方法 (顾名思义:将方法工厂化)、抽象工厂模式 (顾名思义:将工厂抽象化 工厂 > 工厂 > 创建)
特点:将接口与具体实现分离,根据需要实例化对象使用场景:日志记录,文件服务平台,数据库访问
1. 定义产品接口
type P interface {}
2. 定义实现结构
type P1 struct {} //implement P
type P2 struct {} //implement P
…// 简单 3. 工厂方法(简单工厂完)
func F (name string) P {}
// 抽象 3. 工厂接口,用于生产工厂
type Factory interface {
CreateP(name string)
CreatePE(name string)
…
}
4. 创建多种产品接口
type PE interface {}
…
5. 创建实现结构
type PE1 struct {}
type PE2 struct {}
…
6. 工厂实现结构
type F1 struct {} //implement Factory,用于生产 P
type F2 struct {} //implement Factory,用于生产 PE
…
7. 生产工厂方法
func CreateFactory(name string) Factory{}
应用:
f1 := CreateFactory(F1)
//f1 为工厂 F1 的一个实例
p1 := f1.CreateP(P1)
//p1 则为产品 P1 的一个实例
p2 := f1.CreateP(P2)
//p2 则为产品 P2 的一个实例
…
f2 := CreateFactory(F2)
//f2 为工厂 F2 的一个实例
pe1 := f2.CreatePE(PE1)
…