首先来看一下两个模式的UML图:
工厂模式:
抽象工厂模式:
这张图看过的小伙伴应该清楚知道来自哪...
来自狂神,借用一下您的图,我也是看了你的视频然后产生误解再到理解
通过类图其实可以发现,从类图上体现出来的层次是一样的!
写过代码的小伙伴也会发现其实结构也非常的相似!那么区别在哪呢?
个人理解:
区别体现在维度!抽象工厂模式解决了二维度的问题,也就是多个种族,可以看出抽象工厂实际上是要比工厂更抽象一层(这里指思维,维度上的抽象)。
抽象工厂模式最顶层的工厂是一个抽象产品工厂,这个产品工厂可以产生不同的种族,比如:手机、路由器等。下一层就是对应的品牌工厂,该工厂可以生产自己品牌下的多种产品!
而工厂模式最顶层是一个对应种族的抽象工厂,比如:手机工厂、路由工厂,然后下一层就是对应品牌的工厂生产不同产品!
以工厂模式的UML图为参照。手机工厂有它的生产线:
如果我还需要一个路由器工厂,那么可以构建一个路由器工厂,如果需要更多其他产品,则依次创建!会发现手机工厂中有生产苹果手机,路由器工厂中有发现生产苹果路由器。如果需求要将这些不同品牌下的不同产品进行归类!针对这种情况,你是选择创建一个抽象工厂模式还是多个工厂模式呢?毫无疑问,选择抽象工厂模式!一个华为产品工厂就可以生产华为的手机、路由器等...
现在可以清晰感受到,工厂模式针对的是一个维度的问题,而抽象工厂模式则是针对两个维度的问题!