话不多说开干
package main
import "fmt"
// 定义接口
type People interface {
DoWork()
}
// 学生
type Student struct {
}
func (r *Student) DoWork() {
fmt.Println("study");
}
// 程序员
type Programmer struct {
}
func (r *Programmer) DoWork() {
fmt.Println("touch fish");
}
// 工厂
type PeopleFactory struct {
}
func (r *PeopleFactory) GetPeople(username string) People {
if username == "尤雨溪" {
return new(Programmer)
} else {
return new(Student)
}
}
func main() {
peopleFactory := new(PeopleFactory)
peopleFactory.GetPeople("尤雨溪").DoWork()
peopleFactory.GetPeople("Field").DoWork()
}