简单工厂模式
又称为静态工厂方法,它属于类创建型模式
简单工厂模式的要点
当需要什么时,只需要传入一个正确的参数,就可以获取到你所需要的对象,不需要知道它的创建细节
什么时候需要简单工厂模式?
1、创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。
2、客户端只知道传入工厂类的参数,对于如何创建对象不关心,只需要知道类型对应的参数即可。
案例演示
1、背景
我去奶茶店买奶茶。
2、背景解析
我 ==> 客户端 ==> 我的目标 ==> 要买奶茶(我不关心奶茶是怎么做的,是谁做的,我只关心最终我是要拿到奶茶)
奶茶店 ==> 工厂 ==> 根据客人(客户端)的指令要求制作奶茶给他
3、根据以上进行代码编写
定义奶茶店
// 奶茶店(奶茶店肯定有很多种奶茶的了)
type naiChaFactory interface {
// 得到一杯奶茶的方法
getNaiCha()
}
具体奶茶的实现1
// 珍珠奶茶(奶茶具体的实现)
type zhenZhuNaiCha struct {
}
func (c zhenZhuNaiCha) getNaiCha() {
fmt.Println("往杯中倒入少许牛奶,加入珍珠...这样一杯珍珠奶茶就做完了!!!")
}
具体奶茶的实现2
// 芋泥波波奶茶(奶茶具体的实现)
type yuNiBoBoCha struct {
}
func (y yuNiBoBoCha) getNaiCha() {
fmt.Println("往杯中倒入少许牛奶,加入芋泥...这样一杯芋泥波波奶茶就做完了!!!")
}
我去奶茶店买奶茶(工厂方法)
// 工厂方法(去奶茶店买奶茶)
func buyNaiCha(a int) naiChaFactory {
if a == 1 {
return zhenZhuNaiCha{}
} else if a == 2 {
return yuNiBoBoCha{}
}
return nil
}
运行结果
func main() {
cha := buyNaiCha(1)
cha.getNaiCha()
fmt.Println()
cha = buyNaiCha(2)
cha.getNaiCha()
}
往杯中倒入少许牛奶,加入珍珠…这样一杯珍珠奶茶就做完了!!!
往杯中倒入少许牛奶,加入芋泥…这样一杯芋泥波波奶茶就做完了!!!