package bhomedbapi import "basic.com/valib/bhomebus.git" //Factory new client func NewClient(opts ...IOption) Client { opt := defaultOption() for _,o := range opts { o.apply(&opt) } return &SBusClient{ nodes: opt.nodes, } } type Option struct { nodes []bhomebus.NetNode } type IOption interface { apply(*Option) } type funcOption struct { f func(*Option) } func (fo *funcOption) apply(o *Option) { fo.f(o) } func newFuncOption(f func(*Option)) *funcOption { return &funcOption{ f:f, } } func WithNodes(nodeArr []bhomebus.NetNode) IOption { return newFuncOption(func(o *Option) { o.nodes = nodeArr }) } func defaultOption() Option { return Option{ } }