什么是建造者模式?
示范代码(builder.go)
package Builder
// 建造者
type Builder interface {
builderPart1()
builderPart2()
builderPart3()
}
// 建工
type Director struct {
builder Builder
}
func NewDirector(builder Builder) Director {
return Director{builder: builder}
}
func (d *Director) construct() {
d.builder.builderPart1()
d.builder.builderPart2()
d.builder.builderPart3()
}
// 具体的建造者
type ConcreteBuilder struct {
index int64
}
func NewConcreteBuilder() *ConcreteBuilder {
return &ConcreteBuilder{index: 0}
}
func (c *ConcreteBuilder) builderPart1() {
c.index = c.index + 1
}
func (c *ConcreteBuilder) builderPart2() {
c.index = c.index + 2
}
func (c *ConcreteBuilder) builderPart3() {
c.index = c.index + 3
}
func (c *ConcreteBuilder) getResult() int64 {
return c.index
}
测试用例(builder_test.go)
package Builder
import (
"fmt"
"testing"
)
func TestNewConcreteBuilder(t *testing.T) {
concreteBuilder := NewConcreteBuilder()
director := NewDirector(concreteBuilder)
director.construct()
fmt.Println(concreteBuilder.getResult())
}