Go 18.0 专业五


01. 简单工厂模式

<p>go 语言没有构造函数一说,所以一般会定义NewXXX函数来初始化相关类。<br /> NewXXX 函数返回接口时就是简单工厂模式,也就是说Golang的一般推荐做法就是简单工厂。</p> <p>在这个simplefactory包中只有API 接口和NewAPI函数为包外可见,封装了实现细节。</p> <h4>simple.go代码</h4> <pre><code>package simplefactory import "fmt" //API is interface type API interface { Say(name string) string } //NewAPI return Api instance by type func NewAPI(t int) API { if t == 1 { return &amp;hiAPI{} } else if t == 2 { return &amp;helloAPI{} } return nil } //hiAPI is one of API implement type hiAPI struct{} //Say hi to name func (*hiAPI) Say(name string) string { return fmt.Sprintf("Hi, %s", name) } //HelloAPI is another API implement type helloAPI struct{} //Say hello to name func (*helloAPI) Say(name string) string { return fmt.Sprintf("Hello, %s", name) }</code></pre> <h4>simple_test.go代码</h4> <pre><code>package simplefactory import "testing" //TestType1 test get hiapi with factory func 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") } }</code></pre>

页面列表

ITEM_HTML