设计模式golang-工厂模式

工厂模式

定义

创建对象的接口,让其子类自己决定实例化哪个类,工厂模式使其创建过程延迟到子类进行。

角色

1.产品抽象接口

2.工厂创建产品方法

3.产品实例

例子

选银行借钱的例子,资质方法根据你的收入等其他情况给你选择银行。

//抽象产品接口
type Bank interface {
 BorrowMoney()
}
//具体银行产品实例
type BjBank struct{
}
func (b *BjBank)BorrowMoney(){
	fmt.Println("bj bank borrow money")
}
type ZsBank struct{
}
func (z *ZsBank)BorrowMoney(){
	fmt.Println("zs bank borrow money")
}
//工厂创建产品方法
func GetBank(incomeMoney int64)Bank{
	if incomeMoney > 10{
		return &BjBank{}
	}else if incomeMoney >100{
		return &ZsBank{}
	}
	return nil
}

func main(){
	//向资质工厂获取可以借钱的银行对象
	b := GetBank(20)
	//借钱
	b.BorrowMoney()
	b := GetBank(200)
	b.BorrowMoney()
}

总结

抽象一个类(interface),多个struct 实现了这个抽象,这个时候我们可以对这个抽象类实现一个工厂方法,这个工厂方法专门来根据一些不确定条件来创建这个抽象类的实体类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值