建造者模式
此开源图书由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()
}
最后更新于
这有帮助吗?