1. 概述
简单工厂模式是通过传递不同的参数生成不同的实例,缺点就是扩展不同的类别时需要修改代码。
工厂方法模式为每一个product提供一个工程类,通过不同工厂创建不同实例。
类图:
相关源代码demo在Github上,可供参考!
2. 实现过程
-
- 工厂方法定义一个创建struct的接口,让子struct去实现。
type AnimalFactory interface { CreateAnimal() Action }
-
- BirdFactory创建一个Bird的实例
type BirdFactory struct {
}
func (this *BirdFactory) CreateAnimal() Action {
return &Bird{}
}
-
- 工厂方法使用
bFactory := &BirdFactory{}
bird := bFactory.CreateAnimal()
bird.Move(100)