简单工厂模式
简单工厂模式
咖啡接口
package simpleFactory
type coffer interface{
addMilk()
addSugar()
getName() string
}
咖啡
package simpleFactory
type coffee struct{
name string
}
中式咖啡
package simpleFactory
type chinaCoffee struct {
coffee
}
func NewChinaCoffee() *chinaCoffee{
cof := new(chinaCoffee)
cof.name = "中式咖啡"
return cof
}
func (c *chinaCoffee)addMilk(){
fmt.Println("加入三分之一汤匙牛奶!")
}
func (c *chinaCoffee)addSugar(){
fmt.Println("加入10克白糖!")
}
func (c *chinaCoffee)getName() string{
return c.name
}
美式咖啡
package simpleFactory
type americanCoffee struct {
coffee
}
func NewAmericanCoffee() *americanCoffee{
cof := new(americanCoffee)
cof.name = "美式咖啡"
return cof
}
func (a *americanCoffee)addMilk(){
fmt.Println("加入一汤匙牛奶!")
}
func (a *americanCoffee)addSugar(){
fmt.Println("加入20克白糖!")
}
func (a *americanCoffee)getName() string{
return a.name
}
简单工厂
package simpleFactory
type simpleFactory struct{}
func NewSimpleFactory() *simpleFactory{
return &simpleFactory{}
}
func (s *simpleFactory)createCoffee(name string) coffer{
switch name{
case "china":
cof := NewChinaCoffee()
cof.addMilk()
cof.addSugar()
return cof
case "american":
acof := NewAmericanCoffee()
acof.addMilk()
acof.addSugar()
return acof
default :
return nil
}
}
测试文件
package simpleFactory
func TestSimpleFactory(t *testing.T){
fac := NewSimpleFactory()
cof := fac.createCoffee("china")
fmt.Println(cof.getName)
cof1 := fac.createCoffee("american")
fmt.Println(cof1.getName)
}

浙公网安备 33010602011771号