go语言简单工厂模式介绍与代码编写

【go语言简单工厂模式介绍与代码编写】

go语言简单工厂模式介绍与代码编写

文章插图

go 语言没有构造函数一说 , 所以一般会定义NewXXX函数来初始化相关类 。
NewXXX 函数返回接口时就是简单工厂模式 , 也就是说Golang的一般推荐做法就是简单工厂 。
在这个simplefactory包中只有API 接口和NewAPI函数为包外可见 , 封装了实现细节 。
参考:Go语言中文文档:www.topgoer.com
simple.go代码package simplefactoryimport "fmt"//API is interfacetype API interface {Say(name string) string}//NewAPI return Api instance by typefunc NewAPI(t int) API {if t == 1 {return &hiAPI{}} else if t == 2 {return &helloAPI{}}return nil}//hiAPI is one of API implementtype hiAPI struct{}//Say hi to namefunc (*hiAPI) Say(name string) string {return fmt.Sprintf("Hi, %s", name)}//HelloAPI is another API implementtype helloAPI struct{}//Say hello to namefunc (*helloAPI) Say(name string) string {return fmt.Sprintf("Hello, %s", name)}simple_test.go代码package simplefactoryimport "testing"//TestType1 test get hiapi with factoryfunc TestType1(t *testing.T) {api := NewAPI(1)s := api.Say("Tom")if s != "Hi, Tom" {t.Fatal("Type1 test fail")}}func TestType2(t *testing.T) {api := NewAPI(2)s := api.Say("Tom")if s != "Hello, Tom" {t.Fatal("Type2 test fail")}}



    推荐阅读