简单工场模式

2020-05-09  本文已影响0人  耗子_aca3
package pattern

import (
    "errors"
    "fmt"
    "testing"
)

func TestFactory(t *testing.T) {
    cat, err := AnimalCreator("cat")
    if err == nil {
        cat.Say()
    }

    dog, err:= AnimalCreator("dog")
    if err == nil {
        dog.Say()
    }

    wrong, err := AnimalCreator("xxx")
    if err == nil {
        wrong.Say()
    }
}

type Animal interface {
    Say()
}

type Dog struct {

}
func (d *Dog) Say()  {
    fmt.Println("wangwang")
}

type Cat struct {

}

func (c *Cat) Say()  {
    fmt.Println("miaomiao")
}

func AnimalCreator(animalType string) (Animal, error) {
    err := errors.New("animal is no pattern")
    switch animalType {
        case "cat":
            return &Cat{},nil
        case "dog":
            return &Dog{},nil
        default:
            fmt.Println("animal is no pattern")
            return nil, err
    }
}
上一篇 下一篇

猜你喜欢

热点阅读