```go package abstract_factory import "fmt" type Lunch interface { Cook() } type Rise struct { } func (r *Rise) Cook() { fmt.Println("这是 测试1111。") } type Tomato struct { } func (t *Tomato) Cook() { fmt.Println("这是 测试22222。") } type LunchFactory interface { CreateFood() Lunch CreateVegetable() Lunch } type SimpleLunchFactory struct { } func NewSimpleLunchFactory() LunchFactory { return &SimpleLunchFactory{} } func (s *SimpleLunchFactory) CreateFood() Lunch { return &Rise{} } func (s *SimpleLunchFactory) CreateVegetable() Lunch { return &Tomato{} } ``` * 实际抽象工厂是对工程的工厂函数的再次接口抽象 * `type Lunch interface { Cook() }` 声明接口,声明`type Rise struct {}` 和 `type Tomato struct {}` 结构体,通过结构体声明接口函数,使得实现接口,从而实现多态。 * `type LunchFactory interface { CreateFood() Lunch; CreateVegetable() Lunch }` 声明一个接口,接口中存在不同函数,用于返回不同对象,是对 原 *工厂模式* 升级,使 * 通过工厂函数,通过调用不同的接口函数,调用不同接口实现,完成(接口)多态调用。而工厂函数返回实际对象,从而使用实际对象,调用接口具体实现。