简单工厂模式
简单工厂模式
咖啡接口
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号
浙公网安备 33010602011771号