【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")}}
推荐阅读
- 简谈普洱茶的存放,存放普洱茶的几个简单条件
- 姓花的名字 姓花的男孩名字
- 多尔衮怎么不夺皇位 多尔衮为什么没有直接称帝:原因其实很简单!
- 果味养生红茶的做法,超简单自制奶茶的做法
- 简单几步给你的 C 盘扩容
- C# 8.0 中的新增功能
- 肉炒什么菜好吃简单
- 民间剪纸教程简单步骤 民间剪纸简介
- 简单点评大益熟茶,不样的熟茶
- 太极拳的好处有哪些 简单几招让你暴瘦20斤