工厂模式是了降低类与类之间的耦合度,比如我们想要一个手机,如果我们指定某一个工人为我们生产手机。我们生产这个手机的进度完全取决于这个工人,如果工人请假了,一定会影响我们得到手机的进度。这就是客户和工人的耦合度太高造成的影响。这时候,可以有一个生产手机的工厂,我们不必关系是谁在为我们生产手机,我们说了我们的需求,由工厂指定空闲的工人为我们生产手机,不可能每一个工人都请假了。这样的结构比较健壮。golang中的工厂模式的代码,如下:
package main import "fmt" type API interface { Say(name string)string } type hiAPI struct {} func (this *hiAPI) Say(name string) string{ return fmt.Sprintf("Hi,%s",name) } type helloAPI struct {} func (this *helloAPI) Say(name string) string{ return fmt.Sprintf("Hello,%s",name) } func NewAPI(t int)API{ if t == 1{ return &hiAPI{} }else if t == 2{ return &helloAPI{} } return nil } func main(){ t := NewAPI(1) fmt.Println(t.Say("美女")) s := NewAPI(2) fmt.Println(s.Say("帅哥")) }