用Go语言实现工厂模式

golang中的struct没有构造函数,一般可以使用工厂模式来解决这个问题。这个模式本身很简单而且使用在业务较简单的情况下。一般用于小项目或者具体产品很少扩展的情况(这样工厂类才不用经常更改)。

代码结构如下:分别有main.go和student.go两个文件。

在student.go中:

package model//定义一个结构体type student struct{Name stringscore float64}//因为student结构体首字母是小写,因此是只能在model使用//我们通过工厂模式来解决rfunc NewStudent(n string, s float64) *student {return &student{Name : n,score : s,}}//如果score字段首字母小写,则,在其它包不可以直接方法,我们可以提供一个方法func (s *student) GetScore() float64{return s.score //ok}

在main.go中:

package mainimport ("fmt""factory/model")func main() {//创建要给Student实例// var stu = model.Student{// Name :"tom",// Score : 78.9,// }//定student结构体是首字母小写,我们可以通过工厂模式来解决var stu = model.NewStudent("tom~", 98.8)fmt.Println(*stu) //&{....}fmt.Println("name=", stu.Name, " score=", stu.GetScore())}

执行结果如下图所示: