设计模式笔记 - 生成器模型(下)

169 阅读1分钟

生成器模式 也叫建造者模式或者构建者模式。生成器模式是一种创建型设计模式,使你能够分步骤创建复杂对象。该模式允许你使用相同的创建代码生成不同类型和形式的对象。

生成器模式解决的问题是:创建对象时,初始化步骤复杂,构造函数参数很多。使用该模式能够简化初始化的过程。


实现步骤:

  • 定义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()
}

参考