定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行 主要解决接口选择问题
返回的实例都实现同一接口
import "fmt"
// 定义一个女孩的接口让下面的类隐式继承
type gril interface {
weight()
}
type FatGril struct {}
func (FatGril) weight() {
fmt.Println("100kg")
}
type ThinGirl struct {}
func (ThinGirl) weight () {
fmt.Println("45kg")
}
// 简单工厂
type GirlFactory struct {}
func (*GirlFactory) CreateGirl (like string) gril {
switch like {
case "fat":
return &FatGril{}
case "thin":
return &ThinGirl{}
default:
return nil
}
}
// 测试
factor := &GirlFactory{}
Fat := factor.CreateGirl("fat")
Fat.weight()
Thin := factor.CreateGirl("thin")
Thin.weight()
100kg
45kg