package DesignPattern
// 建造者模式
type Builder interface{
Build()
}
type Director struct{
builder Builder
}
func (d *Director) Construct () {
d.builder.Build()
}
func NewDirector(b Builder)Director{
return Director{builder: b }
}
func NewBuilder (b Builder) Director{
return Director{builder: b}
}
type ConcreteBuilder struct{
built bool
}
func NewConcreteBuilder () ConcreteBuilder{
return ConcreteBuilder{false}
}
func (b *ConcreteBuilder)Build(){
b.built = true
}
type Product struct{
Built bool
}
func (b *ConcreteBuilder) GetResult() Product{
return Product{b.built}
}
测试代码
builder := dp.NewConcreteBuilder()
dircotor := dp.NewDirector(&builder)
dircotor.Construct()
result := builder.GetResult()
fmt.Println(result.Built)