生成器模式 也叫建造者模式或者构建者模式。生成器模式是一种创建型设计模式,使你能够分步骤创建复杂对象。该模式允许你使用相同的创建代码生成不同类型和形式的对象。
生成器模式解决的问题是:创建对象时,初始化步骤复杂,构造函数参数很多。使用该模式能够简化初始化的过程。
实现步骤:
- 定义
builder的通用接口,各个实体builder实现接口 - 通过链式方式调用初始化函数,设置对象的具体参数
- 最终从
实体builder中生成具体对象
下面的代码是根据 建造者模式:详解构造函数、set方法、建造者模式三种对象创建方式 讲解编写的:
package main
import "fmt"
type house struct {
wall string
pool bool
tree bool
}
func (h *house) show() {
fmt.Printf("wall: %s, pool: %v, tree: %v\n", h.wall, h.pool, h.tree)
}
type builder interface {
reset()
setPool()
setTree()
}
type woodHouseBuilder struct{ house }
func newWoodHouseBuilder() *woodHouseBuilder {
b := &woodHouseBuilder{}
b.reset()
return b
}
func (b *woodHouseBuilder) setPool() *woodHouseBuilder {
b.pool = true
return b
}
func (b *woodHouseBuilder) setTree() *woodHouseBuilder {
b.tree = true
return b
}
func (b *woodHouseBuilder) reset() *woodHouseBuilder {
b.wall = "wood"
b.pool = false
b.tree = false
return b
}
func (b *woodHouseBuilder) get() house {
return b.house
}
func main() {
house := newWoodHouseBuilder().setPool().setTree().get()
house.show()
}