建造者模式

此开源图书由ithaiq原创,创作不易转载请注明出处

该模式适用于参数初始化时使用,限制创建对象的方式跟细腻度控制参数

package main

type Book struct {
	Id    int
	Name  string
	price float32
}

func (this *Book) Builder(id int, name string) *BookBuilder {
	return &BookBuilder{Id: id, Name: name}
}

type BookBuilder struct {
	Id    int     //必填
	Name  string  //必填
	price float32 //非必填
}

func (this *BookBuilder) SetPrice(price float32) *BookBuilder {
	this.price = price
	return this
}

func (this *BookBuilder) Build() *Book {
	book := &Book{Id: this.Id, Name: this.Name}
	if this.price > 0 {
		book.price = this.price
	}
	return book
}

func main() {
	new(Book).Builder(1, "s").SetPrice(12.3).Build()
}

最后更新于

这有帮助吗?