工厂方法模式
wiki: 工厂方法模式(英语:Factory method pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。”
上面是 维基百科 中对工厂方法的定义,在上一篇
golang设计模式之简单工厂模式
中我们介绍过,唯一的一个工厂控制着
所有产品的实例化,而
工厂方法
中包括一个工厂接口,我们可以动态的实现多种工厂,达到扩展的目的
-
简单工厂需要:
- 工厂结构体
- 产品接口
- 产品结构体
-
工厂方法需要:
- 工厂接口
- 工厂结构体
- 产品接口
- 产品结构体
在
简单工厂
中,依赖于唯一的工厂对象,如果我们需要实例化一个产品,那么就要向工厂中传入一个参数获取对应对象,如果要增加一种产品,就要在工厂中修改创建产品的函数,耦合性过高
,而在
工厂方法
中,依赖工厂接口,我们可以通过实现工厂接口,创建多种工厂,将对象创建由一个对象负责所有具体类的实例化,变成由一群子类来负责对具体类的实例化,将过程解耦。
下面用代码实现:
例如,我们现在有一个产品需要被创建,那么先构建工厂接口和产品接口
// 工厂接口
type FactoryInterface interface {
CreateProduct(t string) ProductInterface
}
// 产品接口