Go 设计模式--Builder模式

Posted flycc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go 设计模式--Builder模式相关的知识,希望对你有一定的参考价值。

造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。

package builder

import(
	"fmt"
)


type Builder interface {
	Step1()
	Step2()
	Step3()
} 

type Xiaomi struct{
	Function string
}

func (this *Xiaomi)Step1(){
	fmt.Println("小米Step1")
	this.Function += "[打电话]"
}
func (this *Xiaomi)Step2(){
	fmt.Println("小米Step2")
	this.Function += "[游戏]"
}
func (this *Xiaomi)Step3(){
	fmt.Println("小米Step3")
	this.Function += "[便宜]"
}
func (this *Xiaomi)GetFunction()string{
	fmt.Println( this.Function)
	return this.Function
}

type Huawei struct{
	Function string
}

func (this *Huawei)Step1(){
	fmt.Println("华为Step1")
	this.Function += "[打电话]"
}
func (this *Huawei)Step2(){
	fmt.Println("华为Step2")
	this.Function += "[拍照]"
}
func (this *Huawei)Step3(){
	fmt.Println("华为Step3")
	this.Function += "[贵]"
}
func (this *Huawei)GetFunction()string{
	fmt.Println( this.Function)
	return this.Function
}


type Drictor struct{
	bui Builder
}

func NewConstruct(bui Builder)*Drictor{
	return &Drictor{
		bui : bui,
	}
}

func(this *Drictor)Consturct(){
	this.bui.Step1()
	this.bui.Step2()
	this.bui.Step3()
}

  

	xm := builder.Xiaomi{}
	drictor:= builder.NewConstruct(&xm)
	drictor.Consturct()
	xm.GetFunction()

	hw := builder.Huawei{}
	drictor2 := builder.NewConstruct(&hw)
	drictor2.Consturct()
	hw.GetFunction()

  技术图片

 

 不同的建造者同样的步骤最终创建的结果不一样

以上是关于Go 设计模式--Builder模式的主要内容,如果未能解决你的问题,请参考以下文章

Java设计模式Builder建造者模式,Builder设计模式简单代码示例

Builder设计模式,模板设计模式,Adapter设计模式笔记

builder模式-积木系列

设计模式Builder模式

23种设计模式之建造者模式代码实例

设计模式——11.建造者模式