package build //建造者模式 type Product struct { Message string } type Product2 struct { Message int } type Builder interface { Part1() Part2() Part3() getProduct() Product } type Director struct { builder Builder } func NewDirector(builder Builder) *Director { return &Director{ builder: builder, } } type Builder1 struct { product Product } func (b *Builder1) Part1() { b.product.Message += "1" } func (b *Builder1) Part2() { b.product.Message += "2" } func (b *Builder1) Part3() { b.product.Message += "3" } func (b *Builder1) GetResult() Product { return b.product } type Builder2 struct { product Product2 } func (b *Builder2) Part1() { b.product.Message += 1 } func (b *Builder2) Part2() { b.product.Message += 2 } func (b *Builder2) Part3() { b.product.Message += 3 } func (b *Builder2) GetResult() Product2 { return b.product }