Golang实现简单工厂模式

611 阅读1分钟

对于工厂模式,简单的说,工厂是用来生产产品的,并且根据要求不同,工厂可以生产出不同的产品,在程序中表现为,有一个工厂类型方法可以根据给定参数的不同返回不同的产品。

首先我们来定义一个产品接口,只要实现了这个接口的类都可以视为产品 :

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{}   
    }
}


简单工厂模式又称之位静态共产模式:它有它的缺陷,以上述例子为例,虽然我们可以在不改变其他商品的前提下去增加商品,但是工厂方法还是要修改。