设计模式——建造者设计模式

有时会出现一个类,构造函数需要大量的参数,但是有些参数是不经常用到的,这会很麻烦。

我们可以使用建造者模式,像流水线,将所需要的对象组装并且返回。

建造者模式

可以将类划分为组件,通过组件接口调用,完成组件的组装。

可以创建一个房屋,房屋有窗户、地板、门和泳池,但是有好多房屋是没有泳池的,这就需要自己调用接口组装,也可以使用主管类自动生成。

go的demo

确定房屋的一些接口,例如指定房屋的窗户、门等

package builder

type IBuilder interface {
	SetDoor()
	SetWindow()
	SetFloor()
	GetHouse() House
}

const (
	IgooBuilder = "igoobuilder"
)

func GetBuilder(typebuilder string) IBuilder {
	if typebuilder == IgooBuilder {
		return &IgooHouse{}
	}
	return &IgooHouse{}
}

确定想要建造的房屋的字段。

package builder

type House struct {
	Door   string
	Window string
	Floor  int
}

现在我们创建一个建造者,建造者需要实现上面的接口,并且拥有自己的结构体

package builder

type IgooHouse struct {
	Door   string
	Window string
	Floor  int
}

func (i *IgooHouse) SetDoor() {
	i.Door = "igoo door"
}

func (i *IgooHouse) SetWindow() {
	i.Window = "igoo window"
}

func (i *IgooHouse) SetFloor() {
	i.Floor = 2
}

func (i IgooHouse) GetHouse() House {
	return House{
		Door:   i.Door,
		Window: i.Window,
		Floor:  i.Floor,
	}
}

应用场景

  • 构造函数参数过多。
  • 使用代码创建不同类型的产品。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值