【设计模式】Go 语言 - 简单工厂模式

185 阅读1分钟

定义

把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”。

案例

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)
}