工厂模式之简单工厂(golang实现)
由于最近在学习golang,就想着把golang的设计模式也重温一下,当然设计模式是面向对象思想的传承,是一套被反复使用、多数人知晓的,并不限于使用何种语言来实现。
从这里开启golang的设计之旅吧~
go 语言没有构造函数一说,所以一般会定义NewXXX函数来初始化相关类。
NewXXX 函数返回接口时就是简单工厂模式,也就是说Golang的一般推荐做法就是简单工厂。
还是以造手机为例子:
package simpleFactory
import (
log "github.com/sirupsen/logrus"
)
//定义一个phone接口
type Phone interface {
Call() ;
}
//定义创建手机的函数
func NewPhone(t int) Phone{
if t==1{
return &apple{}
} else if t==2{
return &huawei{}
}else if t==3{
return &xiaomi{}
}
return nil
}
//type1
type apple struct{
}
//实现call方法
func (*apple) Call() {
log.Info("我是苹果手机,我可以打电话")
}
//type2
type huawei struct {
}
//实现call方法
func (*huawei) Call() {
log.Info("我是华为手机,我可以打电话")
}
//type3
type xiaomi struct {
}
//实现call方法
func (*xiaomi) Call() {
log.Info("我是小米手机,我可以打电话")
}
客户端测试代码如下:
package simpleFactory
import (
log "github.com/sirupsen/logrus"
)
//定义一个phone接口
type Phone interface {
Call() ;
}
//定义创建手机的函数
func NewPhone(t int) Phone{
if t==1{
return &apple{}
} else if t==2{
return &huawei{}
}else if t==3{
return &xiaomi{}
}
return nil
}
//type1
type apple struct{
}
//实现call方法
func (*apple) Call() {
log.Info("我是苹果手机,我可以打电话")
}
//type2
type huawei struct {
}
//实现call方法
func (*huawei) Call() {
log.Info("我是华为手机,我可以打电话")
}
//type3
type xiaomi struct {
}
//实现call方法
func (*xiaomi) Call() {
log.Info("我是小米手机,我可以打电话")
}
测试结果:


浙公网安备 33010602011771号