建造者模式
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()
}最后更新于