前言
抽象工厂方法通俗的讲就是为创建一组相关或相互依赖的对象提供一组接口,无需指定他们的具体类。因此,他们通常为创建一族产品对象,并且该产品由不同等级划分。
这里还是以之前的例子为例,假设有一个产生top(上单)的机器,另一个产生Jungle(打野)的机器,同时top可以有ad(物理上单)和ap(法术上单),同样,Jungle可以有ad和ap打野,现在需要一个工厂,可以同时产生仅含ad的打野和上单,另一个产生仅含ap的打野和上单,当然可以按照自己的组合
打野
|
|
ad打野
|
|
ap打野
上单
ad上单
ap上单
生产打野和上单的工厂
生产ad打野和上单的工厂
生产ap打野和上单的工厂
通过上面例子,我们可以发现抽象工厂易于交换产品系列,通过按需改变具体工厂从而使用不同的产品配置,同时它也将创建实例的过程与客户端分类
当然它的缺点就是和简单工厂一样,如果要从sql server切换到mysql,需要重新实例很多次
最后对应工厂系列的设计模式,无论选择哪一个,最终的目的都是为了解耦!