mirror of
https://github.com/Xevion/go-ha.git
synced 2025-12-06 03:15:14 -06:00
remove person.go builder example
This commit is contained in:
100
person.go
100
person.go
@@ -1,100 +0,0 @@
|
||||
package gomeassistant
|
||||
|
||||
import "fmt"
|
||||
|
||||
type Person struct {
|
||||
// Personal details
|
||||
name, address, pin string
|
||||
// Job details
|
||||
workAddress, company, position string
|
||||
salary int
|
||||
}
|
||||
|
||||
// PersonBuilder struct
|
||||
type PersonBuilder struct {
|
||||
person *Person
|
||||
}
|
||||
|
||||
// PersonAddressBuilder facet of PersonBuilder
|
||||
type PersonAddressBuilder struct {
|
||||
PersonBuilder
|
||||
}
|
||||
|
||||
// PersonJobBuilder facet of PersonBuilder
|
||||
type PersonJobBuilder struct {
|
||||
PersonBuilder
|
||||
}
|
||||
|
||||
// NewPersonBuilder constructor for PersonBuilder
|
||||
func NewPersonBuilder() *PersonBuilder {
|
||||
return &PersonBuilder{person: &Person{}}
|
||||
}
|
||||
|
||||
// Lives chains to type *PersonBuilder and returns a *PersonAddressBuilder
|
||||
func (b *PersonBuilder) Lives() *PersonAddressBuilder {
|
||||
return &PersonAddressBuilder{*b}
|
||||
}
|
||||
|
||||
// Works chains to type *PersonBuilder and returns a *PersonJobBuilder
|
||||
func (b *PersonBuilder) Works() *PersonJobBuilder {
|
||||
return &PersonJobBuilder{*b}
|
||||
}
|
||||
|
||||
// At adds address to person
|
||||
func (a *PersonAddressBuilder) At(address string) *PersonAddressBuilder {
|
||||
a.person.address = address
|
||||
return a
|
||||
}
|
||||
|
||||
// WithPostalCode adds postal code to person
|
||||
func (a *PersonAddressBuilder) WithPostalCode(pin string) *PersonAddressBuilder {
|
||||
a.person.pin = pin
|
||||
return a
|
||||
}
|
||||
|
||||
// As adds position to person
|
||||
func (j *PersonJobBuilder) As(position string) *PersonJobBuilder {
|
||||
j.person.position = position
|
||||
return j
|
||||
}
|
||||
|
||||
// For adds company to person
|
||||
func (j *PersonJobBuilder) For(company string) *PersonJobBuilder {
|
||||
j.person.company = company
|
||||
return j
|
||||
}
|
||||
|
||||
// In adds company address to person
|
||||
func (j *PersonJobBuilder) In(companyAddress string) *PersonJobBuilder {
|
||||
j.person.workAddress = companyAddress
|
||||
return j
|
||||
}
|
||||
|
||||
// WithSalary adds salary to person
|
||||
func (j *PersonJobBuilder) WithSalary(salary int) *PersonJobBuilder {
|
||||
j.person.salary = salary
|
||||
return j
|
||||
}
|
||||
|
||||
// Build builds a person from PersonBuilder
|
||||
func (b *PersonBuilder) Build() *Person {
|
||||
return b.person
|
||||
}
|
||||
|
||||
// RunBuilderFacet example
|
||||
func RunBuilderFacet() {
|
||||
pb := NewPersonBuilder()
|
||||
pb.
|
||||
Lives().
|
||||
At("Bangalore").
|
||||
WithPostalCode("560102").
|
||||
Works().
|
||||
As("Software Engineer").
|
||||
For("IBM").
|
||||
In("Bangalore").
|
||||
WithSalary(150000)
|
||||
|
||||
person := pb.Build()
|
||||
|
||||
fmt.Println(person)
|
||||
}
|
||||
Reference in New Issue
Block a user