定义
把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”。
案例
package main
import "fmt"
type Person interface {
Say(string) string
}
type ChinesePerson struct {}
func (*ChinesePerson) Say(msg string) string {
return fmt.Sprintf("你好,%s", msg)
}
type EnglishPerson struct {}
func (*EnglishPerson) Say(msg string) string {
return fmt.Sprintf("Hello,%s", msg)
}
func NewPerson(region string) Person {
switch region {
case "zh":
return &ChinesePerson{}
case "en":
return &EnglishPerson{}
default:
return &ChinesePerson{}
}
}
func main() {
person := NewPerson("zh")
result := person.Say("吃饭了吗?")
person = NewPerson("en")
result = person.Say("吃饭了吗?")
fmt.Println(result)
}