| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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
- }
|