对于工厂模式,简单的说,工厂是用来生产产品的,并且根据要求不同,工厂可以生产出不同的产品,在程序中表现为,有一个工厂类型方法可以根据给定参数的不同返回不同的产品。
首先我们来定义一个产品接口,只要实现了这个接口的类都可以视为产品 :
type product interface {
use()
}来实现俩个产品,一个是iphone产品类,一个是ipad产品类。
// 苹果产品
type iphone struct {}
func (i *iphone) use() {
fmt.Println("这是一个iphone")
}
// 平板产品
type ipad struct {}
func (i *ipad) use() {
fmt.Println("这是一个ipad")
}最后实现工厂类,用来根据参数的不同生产不同的商品:
type factory struct {}
func (p *factory) prouce(types string) product {
if types == "iphone" {
return &iphone{}
} else {
return &ipad{}
}
}简单工厂模式又称之位静态共产模式:它有它的缺陷,以上述例子为例,虽然我们可以在不改变其他商品的前提下去增加商品,但是工厂方法还是要修改。