Golang 设计模式之一简单工厂

1、定义

简单工厂是一个能够根据参数的不同返回具有相同接口但不同类的实例

2、使用场景

女娲造人 :造了黑人、白人、黄种人 造人这个行为能够产生不同种类的人

3、具体实现

type API interface {
	Say()
}

func NewPeople(race string) API {
	if race == "black" {
		return &BlackPeople{}
	} else if race == "white" {
		return &WhitePeople{}
	}
	return nil
}

//黑人
type BlackPeople struct{}

//自报家门
func (*BlackPeople) Say() {
	fmt.Println("我是黑人")
}

//白人
type WhitePeople struct{}

//自报家门
func (*WhitePeople) Say() {
	fmt.Println("我是白人")
}

4、调用

func main() {
	people1 := NewPeople("black")
	people1.Say()
	people2 := NewPeople("white")
	people2.Say()
}

5、简单说明

go 语言里没有类的概念只有结构体和结构体的组合嵌套
这demo 展示的是一个NewPeople 工厂生产多种具有相同接口不同实现的结构体。

posted @ 2020-12-26 00:11  斯文哥哥  阅读(50)  评论(0)    收藏  举报