有时会出现一个类,构造函数需要大量的参数,但是有些参数是不经常用到的,这会很麻烦。
我们可以使用建造者模式,像流水线,将所需要的对象组装并且返回。
建造者模式
可以将类划分为组件,通过组件接口调用,完成组件的组装。
可以创建一个房屋,房屋有窗户、地板、门和泳池,但是有好多房屋是没有泳池的,这就需要自己调用接口组装,也可以使用主管类自动生成。
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,
}
}
应用场景
- 构造函数参数过多。
- 使用代码创建不同类型的产品。