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

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

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

建造者模式

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

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

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

应用场景

  • 构造函数参数过多。
  • 使用代码创建不同类型的产品。

你可能感兴趣的:(笔记,设计模式,建造者模式)